@VERSION = 0.029gridgridgrid1pRecordSource = "customer" FontName = "MS Sans Serif" FontSize = 8 Height = 152 Width = 397 Name = "grid1" Class1Pixels)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0 txtbtnsPixelsstylebmp\textbttn.bmpstylebmp\textbttn.bmpClass11 containertxtbtnsTop = 0 Left = 378 Height = 24 Width = 53 FontName = "MS Sans Serif" FontSize = 8 Caption = "\Height = 2 Left = 1 Top = 48 Width = 584 Name = "Shape1" shapeshapeShape2nobtns?Height = 2 Left = 3 Top = 264 Width = 584 Name = "Shape2" labellabelLabel1nobtnsFontSize = 14 BackStyle = 0 Caption = "Label1" Height = 22 Left = 27 Top = 12 Width = 62 AutoSize = .T. Name = "Label1"  %6U %%F %C Bufferingw Ca%C F %C Buffering Ca[ T Cy( W*%C BufferingC SCaC F %CN #)# /F%C SourceTypeCoffline C SendUpdates  Taq%C C SourceType  Coffline C SendUpdates ~ Ta2%  C   OCCYou cannot edit because the view(s) selected does not send updates.xBT CT COT T -T aCCT -ULNOSENDPARENTUPDATESLNOSENDCHILDUPDATES ATABLESUSED NTABLESUSEDITHISPARENTEDITMODE USEDATAENVOLDALIAS GRIDALIASOLDRECADDMODETHISFORM LOCKSCREEN BUTTONREFRESH NAVREFRESH4"C  UNERRORCMETHODNLINETHISPARENTERRORClick,Error132AaAAAqAAAaQAdAA#AA"!A2!1Y3uF)UPROCEDURE Click #DEFINE C_NOUPDATE_LOC "You cannot edit because the view(s) selected does not send updates." LOCAL lNoSendParentUpdates,lNoSendChildUpdates LOCAL aTablesUsed,nTablesUsed,i ** Reverting record IF THIS.Parent.EditMode IF THIS.Parent.UseDataEnv SELECT (THIS.Parent.OldAlias) IF CURSORGETPROP("Buffering")>1 =TableRevert(.T.) ENDIF IF !EMPTY(THIS.Parent.GridAlias) SELECT (THIS.Parent.GridAlias) IF CURSORGETPROP("Buffering")>1 =TableRevert(.T.) ENDIF ENDIF ELSE DIMENSION aTablesUsed[1] m.nTablesUsed = AUSED(aTablesUsed) FOR i = 1 TO m.nTablesUsed IF CURSORGETPROP("Buffering",aTablesUsed[m.i,1])>1 =TableRevert(.T.,aTablesUsed[m.i,1]) ENDIF ENDFOR ENDIF * Go back to original place SELECT (THIS.Parent.OldAlias) IF RECCOUNT() < THIS.Parent.OldRec &&added record at EOF() GO TOP ELSE GO THIS.Parent.OldRec ENDIF ELSE * Check to see if view allows updates IF CURSORGETPROP("SourceType")#3 AND !CURSORGETPROP("offline") AND; !CURSORGETPROP("SendUpdates") lNoSendParentUpdates = .T. ENDIF IF !EMPTY(THIS.Parent.GridAlias) AND ; CURSORGETPROP("SourceType",THIS.Parent.GridAlias)#3 AND ; !CURSORGETPROP("offline",THIS.Parent.GridAlias) AND ; !CURSORGETPROP("SendUpdates",THIS.Parent.GridAlias) lNoSendChildUpdates= .T. ENDIF IF (m.lNoSendChildUpdates AND m.lNoSendParentUpdates) OR; (EMPTY(THIS.Parent.GridAlias) AND m.lNoSendParentUpdates) =MESSAGEBOX(C_NOUPDATE_LOC) RETURN ENDIF THIS.Parent.OldAlias = ALIAS() &&save alias in case reverting THIS.Parent.OldRec = RECNO() &&save record in case reverting ENDIF ** Editing record THIS.Parent.EditMode = !THIS.Parent.EditMode THIS.Parent.AddMode = .F. THISFORM.LockScreen = .T. THIS.Parent.ButtonRefresh() THIS.Parent.NavRefresh() THISFORM.LockScreen = .F. ENDPROC PROCEDURE Error LPARAMETERS nError, cMethod, nLine this.parent.error(m.nError, m.cMethod, m.nLine) ENDPROC Top = 0 Left = 324 Height = 24 Width = 53 FontName = "MS Sans Serif" FontSize = 8 Caption = "\j(9jJ2 picbtnsiݜ*o?H6A wizbmppath 0 %UJF-TaTC+CUTHISPARENT NWORKAREATOPFILEENDFILE NAVREFRESHClick,1A!1)K 22% UaF %C+ & HTC+TCCUTHISPARENT NWORKAREAENDFILETOPFILE NAVREFRESHClick,1A"!2)2@PROCEDURE Init TxtBtns::Init() THISFORM.ShowTips = .T. ENDPROC PROCEDURE setcaption IF !THIS.EditMode THIS.cmdAdd.Picture = THIS.wizbmppath+"wznew.bmp" THIS.cmdEdit.Picture = THIS.wizbmppath+"wzedit.bmp" THIS.cmdAdd.DownPicture = THIS.wizbmppath+"wznew.bmp" THIS.cmdEdit.DownPicture = THIS.wizbmppath+"wzedit.bmp" ELSE THIS.cmdAdd.Picture = THIS.wizbmppath+"wzsave.bmp" THIS.cmdEdit.Picture = THIS.wizbmppath+"wzundo.bmp" THIS.cmdAdd.DownPicture = THIS.wizbmppath+"wzsave.bmp" THIS.cmdEdit.DownPicture = THIS.wizbmppath+"wzundo.bmp" ENDIF ENDPROC   containerhape1" Label1.Height = 16 Label1.Left = 0 La wizstyle.vcx= 51 Shape1.Height = 20 Shape1.Width = 97 editboxxfield%xtextboxe.vcx wizlogic Class reference for a logic field!Arial, 0, 9, 5, 15, 12, 13, 3, 0 ocess = SET("REPROCESS" scrollgrid.nWorkArea = SELECT() THIS.oldSetDelete = SETPixelsx THIS.TopFile = .F. THIS.EndFile = .F. THIS.AddClassardfieldIS.ParentKey = "" THIS.ViewType = 3 THIS.3andardfield" This routine sets the member variables grid SpecialEffect = 1 Width = 100 ColorSource = 0 N scrollgrid "MS Sans Serif" FontSize = 8 Alignment = 3 scrollgrid.Column1. "To remedy this, ensure the View)MS Sans Serif, 1, 8, 6, 13, 11, 12, 2, 0 653752 verttxtbtnsldreprocess oldalias previewinit usedataenPixelsetdelete oldmultilocks oldbuffering addmode olstylebmp\textbttn.bmppreviewmode topfile endfile oldsstylebmp\textbttn.bmpAA2AAaADAAClass: b:B;BD)l/1'/]=02T2q3`37txtbtns^ !!"b' verttxtbtnsA1aAA2Width = 94 Height = 276 Name = "verttxtbtns" cmdPrev.Top = 24 cmdPrev.Left = 0 cmdPrev.Name = "cmdPrev" cmdNext.Top = 48 cmdNext.Left = 0 cmdNext.Name = "cmdNext" cmdTop.Top = 0 cmdTop.Left = 0 cmdTop.Name = "cmdTop" cmdEnd.Top = 72 cmdEnd.Left = 0 cmdEnd.Name = "cmdEnd" cmdFind.Top = 108 cmdFind.Left = 0 cmdFind.Width = 55 cmdFind.Name = "cmdFind" cmdPrint.Top = 132 cmdPrint.Left = 0 cmdPrint.Width = 55 cmdPrint.Name = "cmdPrint" cmdExit.Top = 252 cmdExit.Left = 0 cmdExit.Height = 24 cmdExit.Width = 55 cmdExit.Name = "cmdExit" cmdAdd.Top = 168 cmdAdd.Left = 0 cmdAdd.Name = "cmdAdd" cmdDelete.Top = 216 cmdDelete.Left = 0 cmdDelete.Name = "cmdDelete" cmdEdit.Top = 192 cmdEdit.Left = 0 cmdEdit.Name = "cmdEdit" 2 cm containerMAZt t ĿUf tM wizstyle.vcxፕ| ũ}Nt ңMT E!Arial, 1, 8, 5, 14, 11, 14, 3, 0  chiselbasePixelsstylebmp\txtbox2.bmpstylebmp\txtbox2.bmpClass3 container chiselbaseFontName = "Arial" FontSize = 8 Alignment = 1 BackStyle = 0 Caption = "Label1" Height = 13 Left = 0 Top = 5 Width = 45 ColorSource = 3 TabIndex = 0 Name = "Label1"  chiselbase.Label1labellabeljBackColor = 255,255,255 Height = 2 Left = 46 Top = 20 Width = 97 SpecialEffect = 0 Name = "Shape1"  chiselbase.Shape1shapeshape{Width = 148 Height = 24 BackColor = 192,192,192 BackStyle = 0 BorderWidth = 0 SpecialEffect = 2 Name = "chiselbase"  chisellogicPROCEDURE Click SELECT (THIS.parent.nWorkArea) GO BOTTOM THIS.Parent.TopFile = .F. THIS.Parent.EndFile = .T. THIS.Parent.NavRefresh() ENDPROC Top = 0 Left = 168 Height = 24 Width = 55 FontName = "MS Sans Serif" FontSize = 8 Caption = "\ layoutsty.~.Ąlni'B#[&rxPnShape4"%byTG6ɵQgTT_*Wv V)shapeǛQZSLM INI#ɁdZzshapeǛQZTXTBOX4 BMP!ǛQZ?Height = 13 Left = 24 Top = 45 Width = 37 Name = "Shape3" BMP!QZTXTBOX2 BMP!ǛQZ layoutsty.ǛQAZOLE5 BMP!ǛQBZShape3ƛQYOLE3 BMP!ƛQ@ZshapeƛQYOLE1 BMP!QYshapeƛQYMEMO4 BMP!ƛQY?Height = 13 Left = 24 Top = 24 Width = 37 Name = "Shape2" BMP! QgYMEMO2 BMP!ƛQhY layoutsty.ƛQ&YLOGIC3 BMP!ƛQdYShape2#Q$YLOGIC1 BMP!Q%YshapeƛQ"YFORM5 BMP!ƛQ#YshapeƛQXFORM3 BMP!ƛQ!Y?Height = 205 Left = 0 Top = 0 Width = 517 Name = "Shape1" BMP!ǜQcXFORM1 BMP!QxX layoutsty.Shape1shapeshape&odimensions olabel1 olabel2 ocol2 Width = 517 Height = 205 TabIndex = 0 odimensions = Shape1 olabel1 = Shape2 olabel2 = Shape3 ocol2 = Shape4 Name = "layoutsty"  container>1rWjZyŠ_d4Ϙ)CFcJ/)s  layoutsty Class reference for layout object. wizfield C7t@|$t T$T$ ]_^[D$baseformt.ttF@@tF embossedform3ۃMtt\@MusTop = 265 Left = 6 Height = 1 Width = 568 BackColor = 255,255,255 BorderColor = 255,255,255 Name = "Shape4" >"u embossedform.uNStO@IF>"t3t(҄tShape4dPEPEPCAj3EPjZ5 -AFAdPjWshapep,AdPEPEPCAj3EPjY5 -AFAdshapeAj3EPjX5 -AFAj3dP@8PsTop = 264 Left = 6 Height = 1 Width = 568 BackColor = 128,128,128 BorderColor = 128,128,128 Name = "Shape3" d embossedform.PEPCAj3EPjN5 -AFAj3dPShape3PjM5 -AFAj3dP@8P5 -AshapeDA_^[USVWjjj ͺ@j3EPjL5shapejhhj|u39 `t`tȣxstylebmp\form.bmpMem IF UPPER(EVAL("."+aMems[m.i]+".stylebmp\form.bmp ENDIF ENDFOR * Check for VieClassLATION" THIS.oDataRelation = m.cDataEnvRef+"."11 TO m.nTotMem IF UPPER(EVAL("."+aMems[m.i]+".BaseCshapeshapewizshape;Height = 68 Width = 68 wizeffect = 0 Name = "wizshape" Class1 wizeffect Pixels!Arial, 1, 9, 6, 15, 12, 15, 3, 0 boxbasePixelsstylebmp\txtbox5.bmpstylebmp\txtbox5.bmpClass3 containerboxbaseFontSize = 9 BackColor = 0,0,255 BackStyle = 0 Caption = "Label1" ForeColor = 0,0,255 Height = 15 Left = 3 Top = 2 Width = 49 TabIndex = 0 Name = "Label1" boxbase.Label1labellabelBackColor = 255,255,255 BackStyle = 1 FillColor = 255,255,255 FillStyle = 0 Height = 43 Left = 0 Top = 0 Width = 94 SpecialEffect = 1 wizeffect = 1 Name = "Shape1" boxbase.Shape1shape wizstyle.vcxwizshape^Width = 94 Height = 43 BackStyle = 0 BorderWidth = 0 SpecialEffect = 2 Name = "boxbase"  container!Arial, 1, 9, 6, 15, 12, 15, 3, 0 boxlogicPixelsClass2boxbaseboxlogicTop = 22 Left = 2 Height = 17 Width = 13 FontSize = 9 BackStyle = 1 Caption = "" SpecialEffect = 0 TabIndex = 0 ColorSource = 0 Name = "Check1" boxlogic.Check1checkboxcheckboxWidth = 88 Height = 43 Name = "boxlogic" Shape1.Height = 43 Shape1.Left = 0 Shape1.Top = 0 Shape1.Width = 88 Shape1.Name = "Shape1" Label1.Height = 15 Label1.Left = 3 Label1.Top = 2 Label1.Width = 49 Label1.Name = "Label1"  container wizstyle.vcx!Arial, 1, 9, 6, 15, 12, 15, 3, 0 boxolePixelsClass2boxbaseboxoleXTop = 23 Left = 3 Height = 100 Width = 150 TabIndex = 0 Name = "Oleboundcontrol1" boxole.Oleboundcontrol1oleboundcontrololeboundcontrolWidth = 156 Height = 125 Name = "boxole" Shape1.Height = 125 Shape1.Left = 0 Shape1.Top = 0 Shape1.Width = 156 Shape1.Name = "Shape1" Label1.Height = 15 Label1.Left = 3 Label1.Top = 2 Label1.Width = 49 Label1.Name = "Label1"  container wizstyle.vcx!Arial, 1, 9, 6, 15, 12, 15, 3, 0 boxmemoPixelsClass2boxbaseboxmemoFontSize = 9 BackColor = 255,255,255 BorderStyle = 0 Height = 50 Left = 3 ScrollBars = 0 SpecialEffect = 1 TabIndex = 0 Top = 23 Width = 241 ColorSource = 0 Name = "Edit1" boxmemo.Edit1editboxeditboxWidth = 247 Height = 75 Name = "boxmemo" Shape1.Height = 75 Shape1.Left = 0 Shape1.Top = 0 Shape1.Width = 246 Shape1.Name = "Shape1" Label1.Height = 15 Label1.Left = 3 Label1.Top = 2 Label1.Width = 49 Label1.Name = "Label1"  container wizstyle.vcx!Arial, 1, 9, 6, 15, 12, 15, 3, 0 boxfieldPixelsClass2boxbaseboxfieldFontSize = 9 BackColor = 255,255,255 BackStyle = 1 BorderStyle = 0 Height = 18 Left = 3 SpecialEffect = 1 TabIndex = 0 Top = 23 Width = 88 SelectedBackColor = 128,128,128 ColorSource = 0 Name = "Text1" boxfield.Text1textboxtextboxWidth = 94 Height = 43 Name = "boxfield" Shape1.Height = 43 Shape1.Left = 0 Shape1.Top = 0 Shape1.Width = 94 Shape1.Name = "Shape1" Label1.Height = 15 Label1.Left = 3 Label1.Top = 2 Label1.Width = 49 Label1.Name = "Label1"  container wizstyle.vcx container^ EEK&%U#%%C K TCa Ta%9|T9 TaTC searchformN C C%  TC-% T9%t, U LVISCHANGE LSTATECHANGE OSEARCHDLOGTHISFORM SHOWWINDOWVISIBLE WINDOWSTATESHOWREFRESHNAMEClick,1CA1AAAAAA2)EAWidth = 184 Height = 34 SpecialEffect = 0 Name = "fancybase" xtbtnsss = 0 previewinit = .T. usedataenv = .T. view containerNDPROC f&![bq!9/4<`u!{ wizstyle.vcx SET FIELDS ON ENDIF SET REFRESH TO THIrTop = 43 Left = 5 Height = 1 Width = 568 BackColor = 255,255,255 BorderColor = 255,255,255 Name = "Shape2" jPׅ embossedform.k Vb jlP^%%pShape2(t P F0t P F8t P F@shape^Ã=lVt$ulPltiF$shapet0VlPtFFFPrTop = 42 Left = 5 Height = 1 Width = 568 BackColor = 128,128,128 BorderColor = 128,128,128 Name = "Shape1" l embossedform.t$ ;vtЃ;w_^V tlShape1hܦhئ1t t$ ^[j shapeu?=xwt$5pw;5xwrtЃ;5xwshԦ^Alignment = 0 Height = 24 Left = 132 TabIndex = 3 Top = 192 Width = 218 Name = "Text1" labelJArial, 1, 8, 5, 14, 11, 14, 3, 0 MS Sans Serif, 1, 8, 6, 13, 11, 12, 2, 0 PixelsClass2 chiselbase chisellogicTop = 0 Left = 53 Height = 15 Width = 15 FontName = "MS Sans Serif" FontSize = 8 BackStyle = 0 Caption = "" SpecialEffect = 0 TabIndex = 0 Name = "Check1"  chisellogic.Check1checkboxcheckboxWidth = 94 Height = 18 Name = "chisellogic" Shape1.Height = 2 Shape1.Left = 53 Shape1.Top = 15 Shape1.Width = 13 Shape1.Name = "Shape1" Label1.Height = 13 Label1.Left = 0 Label1.Top = 1 Label1.Width = 45 Label1.Name = "Label1"  container wizstyle.vcx!Arial, 1, 8, 5, 14, 11, 14, 3, 0  chiselolePixelsClass2 chiselbase chiseloleXTop = 0 Left = 46 Height = 100 Width = 150 TabIndex = 0 Name = "Oleboundcontrol1"  chiselole.Oleboundcontrol1oleboundcontrololeboundcontrol container wizstyle.vcx chiselmemoform WITH EVAL(m.cDataEnvRef) * Check for relation Width = 200 Height = 106 Name = "chiselole" Shape1.Height = 2 Shape1.Left = 46 Shape1.Top = 103 Shape1.Width = 150 Shape1.Name = "Shape1" Label1.Height = 13 Label1.Left = 0 Label1.Top = 3 Label1.Width = 45 Label1.Name = "Label1" BArial, 1, 8, 5, 14, 11, 14, 3, 0 Arial, 0, 8, 5, 14, 11, 20, 3, 0 PixelsClass2 chiselbase chiselmemoFontBold = .F. FontName = "Arial" FontSize = 8 BackColor = 192,192,192 BackStyle = 0 Height = 48 Left = 46 SpecialEffect = 0 TabIndex = 0 Top = -1 Width = 150 DisabledForeColor = 0,0,128 SelectedForeColor = 255,255,255 SelectedBackColor = 0,0,0 Name = "Edit1"  chiselmemo.Edit1shape jjj jjj SVhAutoSize = .T. FontBold = .T. FontName = "Times New Roman" FontSize = 20 BackStyle = 0 Caption = "Label1" Height = 34 Left = 12 Top = 8 Width = 83 Name = "Label1" 3 j embossedform.]_^[\3]_^[\ø]_^[\Label1EЈ$hD$TRD$8Eh<label$4D$48uIL$4D$48t+鍄$h;rlabel 3ɋD$08u L$0D$08uAL$0D$08tbaseformISE THIS.UseDataEnv = .F. ENDCASE IF THIS.wizlayout Class reference for layout object. wizfield Class reference for a field object. wizmemo Class reference for a memo field object. wizlogic Class reference for a logic field object. wizole Class reference for a general field object. wizmaxcharfld Max width of character field before using editbox memo object. wizlblsuffix Character expression added to the end of each label (e.g., :). wizlblcap Label capitalization (proper, normal, upper or lower). wizformstretch Whether to shrink/expand form (height only) based on number of fields selected. wizlbldefwid Whether to use fixed label width for consistent look and alignment of fields on form. wiztitle Class reference for title object (label). wizuser For use by user. wizgrid Class reference for grid object with 1-Many forms. wizverify Whether to verify class objects (use for testing but can improve performance if set .F.). wizbuttons Class reference for button set object. wizbtnpos Button position centering (0-none, 1-hori, 2-vert, 3-both). By default, buttons are centered in footer. You can use these settings for better control over how buttons are placed, especially if buttons are vertically laid out. wizcodestyle Whether to use code style or button style. wizbtnlayout Button position object (class) if one used for unique placement of buttons. wizcaptions Whether to use DBC long name label captions. wizbuffering Data environment table buffering setting. wizgridform Whether to use a separate form for grid object. wizlabel Class reference for label object. wizlblspace Space between label and field. wizcboxlbl Whether to use the checkbox as the label. wizpages Allows use of pages for overflow of fields (0 - none, 1 - single column, 2 - multi column). wizpagestyle VISIBLE = .T.DataSession = 1 ScaleMode = 3 Height = 320 Width = 580 DoCreate = .T. AutoCenter = .T. Caption = "Form1" Enabled = .T. wizlayout = wizfield = wizmemo = wizlogic = 0 wizole = wizmaxcharfld = 0 wizlblsuffix = 0 wizlblcap = 0 wizformstretch = 0 wizlbldefwid = 0 wiztitle = wizuser = 0 wizgrid = wizverify = 0 wizbuttons = 0 wizbtnpos = 0 wizcodestyle = 0 wizbtnlayout = 0 wizcaptions = .T. wizbuffering = 5 wizlabel = wizlblspace = 0 wizpages = 1 wizpagestyle = Name = "baseform" ogicuttons * for appropriate table environments. formtyle.vcx SET FIELDS ON ENDIF SET REFRESH TO THITop = 54 Left = 4 Width = 571 Height = 205 TabIndex = 0 Name = "Layoutsty" shape1.Top = 0 shape1.Left = 0 shape1.Height = 205 shape1.Width = 570 shape1.Name = "shape1" shape2.Top = 7 shape2.Left = 6 shape2.Height = 13 shape2.Width = 37 shape2.Name = "shape2" shape3.Top = 22 shape3.Left = 6 shape3.Height = 13 shape3.Width = 37 shape3.Name = "shape3" shape4.Top = 7 shape4.Left = 260 shape4.Height = 13 shape4.Width = 37 shape4.Name = "shape4" ;rЈD$dD$d;EЈ$h embossedform.$ $$@@@@ LayoutstyPDAh =j8PuFAe`Dž< containeruDFAjh@8DAh8P5  wizstyle.vcxjh@8DAjh@8DAj=@ layoutstyt D$43ɊHمuFD$0< t< u L$08AvScaleMode = 3 DoCreate = .T. wizlayout = layoutsty wizfield = embossedfield wizmemo = embossedmemo wizlogic = embossedlogic wizole = embossedole wizmaxcharfld = 45 wizlblsuffix = (":") wizlblcap = proper wizformstretch = .T. wizlbldefwid = .T. wiztitle = Label1 wizuser = 0 wizgrid = grid1 wizverify = .T. wizbtnpos = 0 wizcodestyle = .T. wizcboxlbl = .T. wizlabel = embossedlabel Name = "embossedform" t3ɋT$4H3BformPDAjP8DA3o$@f3@ wizstyle.vcx@Pn !Arial, 0, 9, 5, 15, 12, 13, 3, 0 @P؋ shadowformFAuXFA3sh@hPh@h@Pixels@E}EPFAj5-Ajuustylebmp\form4.bmp$D$@T$4J$L$stylebmp\form4.bmpRPiD$H |$8hL$0tClassL$l$`9D$`}|$`+D$`D$`j$t50vD$0D$d9D$4vD$4$h9D$0$|D$Top = 48 Left = 0 Height = 2 Width = 584 Name = "Shape1"  shadowform.Shape1"@@.reloc"shape@.pntexeP@shape$4uS|$@D$PD$D$D$P֍L$QPTop = 54 Left = 7 Width = 564 Height = 205 TabIndex = 0 odimensions = Shape1 Name = "Layoutsty" shape1.Top = 0 shape1.Left = 0 shape1.Height = 205 shape1.Width = 563 shape1.Name = "shape1" shape2.Top = 7 shape2.Left = 16 shape2.Height = 13 shape2.Width = 37 shape2.Name = "shape2" shape3.Top = 22 shape3.Left = 16 shape3.Height = 13 shape3.Width = 37 shape3.Name = "shape3" shape4.Top = 7 shape4.Left = 252 shape4.Height = 13 shape4.Width = 37 shape4.Name = "shape4" l$uʊD$ shadowform.lmlmlIllIllllIIlIlIllIlIllll LayoutstyHHHHHHHHHHHHHH container풒BBBIB wizstyle.vcxBmmmmmmmlmmlmmmmmmmmmmmmm layoutstymmmmm     BBScaleMode = 3 DoCreate = .T. ColorSource = 0 BackColor = 192,192,192 wizlayout = layoutsty wizfield = shadowfield wizmemo = shadowmemo wizlogic = shadowlogic wizole = shadowole wizmaxcharfld = 45 wizlblsuffix = (":") wizlblcap = proper wizformstretch = .T. wizlbldefwid = .T. wiztitle = Label1 wizuser = 0 wizgrid = grid1 wizverify = .T. wizbtnpos = 0 wizcodestyle = .T. Name = "shadowform" mlmmlmlmmfmlformS.EditDisForeColor) m.oControlParent.Controls[m.i wizstyle.vcx.i].ForeColor = IIF(THIS.EditMode,THIS.EditF!Arial, 0, 9, 5, 15, 12, 13, 3, 0 OX_YES m.lOverw chiselformLD(m.nFld)) m.lHadMessage = .T. Pixels LOOP ENDIF IF OLDVAL(FIELD(m.nstylebmp\form2.bmp(FIELD(m.nFld)) = "G" &&skip for Generstylebmp\form2.bmpMЙ{MClassMM}5M(MXbaseformMȘM chiselformM< MAutoSize = .T. FontSize = 20 BackStyle = 0 Caption = "Label1" Height = 35 Left = 19 Top = 10 Width = 83 ForeColor = 255,255,255 BackColor = 0,0,0 ZOrderSet = 3 Name = "Label1" MM chiselform.MMLabel1Mx*Mؗ+labelMMH(labelPMh&MTop = 0 Left = 0 Height = 50 Width = 580 FillStyle = 0 FillColor = 0,0,0 BorderColor = 0,0,0 ZOrderSet = 2 Name = "Shape3" MMЖ chiselform.tly DBCs FOR i = 1 TO m.nTablesUsed SEShape3D(aTablesUsed) * Can wrap everything in transacshape"" m.lSuccess = .T. m.nOldArea = SELECT() m.nTabshapeDIMENSION aTablesUsed[1] DIMENSION aErrors[1] m.cNTop = 270 Left = 0 Height = 2 Width = 584 ZOrderSet = 1 Name = "Shape2" d,i,nOldArea,lSuccess,lInDBC,lOverwrite,lH chiselform.#DEFINE E_PROMPT_LOC "Error: " #DEFINE MSGShape2ur edits?" #DEFINE E_NOFORCE_LOC "Could not forcshapeMMshapeMГM0-Top = 53 Left = 2 Width = 573 Height = 213 TabIndex = 0 ZOrderSet = 0 odimensions = Shape1 Name = "Layoutsty" shape1.Top = 0 shape1.Left = 0 shape1.Height = 212 shape1.Width = 572 shape1.Name = "shape1" shape2.Top = 7 shape2.Left = 16 shape2.Name = "shape2" shape3.Top = 22 shape3.Left = 16 shape3.Name = "shape3" shape4.Top = 7 shape4.Left = 255 shape4.Name = "shape4" MȒMx|c chiselform.tM !M LayoutstyMxrMs containerM0MH wizstyle.vcx MM layoutstyM MА formC) lShowedMess = .T. ENDIF ENDI wizstyle.vcxAND !m.lShowedMess =MESSAGEBOX(C_NOU!Arial, 0, 9, 5, 15, 12, 13, 3, 0 ERY(.Alias) ENDIboxform IF THIS.oldSetDelete = "OFF" AND ATC("?",CUR optiongroup Optiongroup1 gridaddform. commandgroup commandgroup Commandgroup1 gridaddform.textboxlabellabelLabel3 gridaddform.wFontItalic = .T. BackStyle = 0 Caption = "Label3" Height = 16 Left = 132 Top = 168 Width = 145 Name = "Label3" labellabelLabel4 gridaddform. standardlabel QEڋY H>jYU)MS Sans Serif, 1, 8, 6, 13, 11, 12, 2, 0 MUQEcheckbox A"fEċQ&fUƃy2tMy.tMy*tMjHeight = 16 Width = 68 FontName = "MS Sans Serif" FontSize = 9 Alignment = 0 BackStyle = 0 Caption = "Check1" SpecialEffect = 1 Name = "standardlogic" U܋K EA"3U standardlogicA.fUm_^[]=tnmcheckboxEEXtM7tM1tM'tMtMjEjClassm]ÃSVW3ۍD$ UjujtjjPSPWidth = 204 Height = 55 Name = "shadowmemo" Shape1.Top = 7 Shape1.Left = 52 Shape1.Height = 48 Shape1.Width = 152 Shape1.Name = "Shape1" Label1.Height = 16 Label1.Left = 0 Label1.Top = 4 Label1.Width = 41 Label1.Name = "Label1" UTH shadowmemo.1t = 0 Height = 61 Width = 580 FillStyle =KWidth = 513 Height = 29 wizbmppath = (HOME()+"WIZARDS\WIZBMPS\") Name = "picbtns" cmdPrev.Top = 4 cmdPrev.Left = 51 cmdPrev.Width = 50 cmdPrev.Picture = (HOME()+"WIZARDS\WIZBMPS\WZBACK.BMP") cmdPrev.Caption = "" cmdPrev.ToolTipText = "Previous record" cmdPrev.Name = "cmdPrev" cmdNext.Top = 4 cmdNext.Left = 102 cmdNext.Width = 50 cmdNext.Picture = (HOME()+"WIZARDS\WIZBMPS\WZNEXT.BMP") cmdNext.Caption = "" cmdNext.ToolTipText = "Next record" cmdNext.ColorSource = 0 cmdNext.Name = "cmdNext" cmdTop.Top = 4 cmdTop.Left = 0 cmdTop.Width = 50 cmdTop.Picture = (HOME()+"WIZARDS\WIZBMPS\WZTOP.BMP") cmdTop.Caption = "" cmdTop.ToolTipText = "Top record" cmdTop.Name = "cmdTop" cmdEnd.Top = 4 cmdEnd.Left = 153 cmdEnd.Width = 50 cmdEnd.Picture = (HOME()+"WIZARDS\WIZBMPS\WZEND.BMP") cmdEnd.Caption = "" cmdEnd.ToolTipText = "Bottom record" cmdEnd.Name = "cmdEnd" cmdFind.Top = 4 cmdFind.Left = 204 cmdFind.Width = 50 cmdFind.Picture = (HOME()+"WIZARDS\WIZBMPS\WZLOCATE.BMP") cmdFind.Caption = "" cmdFind.ToolTipText = "Find records" cmdFind.Name = "cmdFind" cmdPrint.Top = 4 cmdPrint.Left = 255 cmdPrint.Width = 50 cmdPrint.Picture = (HOME()+"WIZARDS\WIZBMPS\WZPRINT.BMP") cmdPrint.Caption = "" cmdPrint.ToolTipText = "Print report" cmdPrint.Name = "cmdPrint" cmdExit.Top = 4 cmdExit.Left = 459 cmdExit.Width = 50 cmdExit.Picture = (HOME()+"WIZARDS\WIZBMPS\WZCLOSE.BMP") cmdExit.Caption = "" cmdExit.ToolTipText = "Exit form" cmdExit.Name = "cmdExit" cmdAdd.Top = 4 cmdAdd.Left = 306 cmdAdd.Width = 50 cmdAdd.Picture = (HOME()+"WIZARDS\WIZBMPS\WZNEW.BMP") cmdAdd.Caption = "" cmdAdd.ToolTipText = "Add / Save record" cmdAdd.Name = "cmdAdd" cmdDelete.Top = 4 cmdDelete.Left = 408 cmdDelete.Width = 50 cmdDelete.Picture = (HOME()+"WIZARDS\WIZBMPS\WZDELETE.BMP") cmdDelete.Caption = "" cmdDelete.ToolTipText = "Delete record" cmdDelete.Name = "cmdDelete" cmdEdit.Top = 4 cmdEdit.Left = 357 cmdEdit.Width = 50 cmdEdit.Picture = (HOME()+"WIZARDS\WIZBMPS\WZEDIT.BMP") cmdEdit.Caption = "" cmdEdit.ToolTipText = "Edit / Revert record" cmdEdit.Name = "cmdEdit" t file <> could not be found Pixelsin the * BeforeOpenTables event of the DatawAutoSize = .T. BackStyle = 0 Caption = "Key field:" Height = 18 Left = 48 Top = 168 Width = 60 Name = "Label4" labellabelLabel5 gridaddform.stylebmp\form5.bmpion * you can place a SET DELETstylebmp\form5.bmpall * records will be brought ostylebmp\logic1.bmpt踷D$YD$stylebmp\logic1.bmpD$t  ,tCPixelstjtjt standardlogict ]_^[Ët$D|$Pl$)MS Sans Serif, 1, 9, 6, 13, 11, 12, 2, 0 Aj!Arial, 0, 9, 5, 15, 12, 13, 3, 0 setting. wizgridform  standardformr to use DBC long name label captions. wizbPixelsass) if one used for unique placement of buttons. stylebmp\form1.bmptton style. wizbtnlayout Button positAutoSize = .T. BackStyle = 0 Caption = "B: Enter key value linking parent and child records:" Height = 18 Left = 24 Top = 132 Width = 325 Name = "Label5" ScaleMode = 3 DoCreate = .T. ColorSource = 0 BackColor = 192,192,192 wizlayout = layoutsty wizfield = chiselfield wizmemo = chiselmemo wizlogic = chisellogic wizole = chiselole wizmaxcharfld = 45 wizlblsuffix = (":") wizlblcap = proper wizformstretch = .T. wizlbldefwid = .T. wiztitle = Label1 wizuser = 0 wizgrid = grid1 wizverify = .T. wizbtnpos = 0 wizcodestyle = .T. Name = "chiselform" M gridaddrecPixelsClass1custom gridaddrecaaddoption keyvalue keyfield childprimarykey updatableparentkey nosendupdates *runaddform .Height = 22 Width = 39 Name = "gridaddrec" customDArial, 1, 10, 6, 16, 13, 15, 3, 0 Arial, 3, 10, 6, 16, 13, 17, 3, 0  gridaddformPixelsClass9formeditboxeditboxWidth = 198 Height = 52 Name = "chiselmemo" Shape1.Height = 2 Shape1.Left = 46 Shape1.Top = 50 Shape1.Width = 150 Shape1.Name = "Shape1" Label1.Height = 13 Label1.Left = 0 Label1.Top = 3 Label1.Width = 45 Label1.Name = "Label1" !Arial, 0, 8, 5, 14, 11, 12, 3, 0 "Edit1" Name = "Sha embossedfieldTabIndex = 0 Top = 2 Width = 150 ColorSoPixelsme = "Arial" FontSize = 8 Height = 48 Left = 48stylebmp\txtbox3.bmp128,128 Name = "Shape1" ther to vestylebmp\txtbox3.bmpidth = 0 FillStyle = 0 BackColor =Classox Left = 51 Height = 20 Width = 97 BackStyle =1ditboxase.EFILTER CHANGEDFILTERDestroy,Inittextboxabel1.Width = 41 Label1.Name = "Label1" UTH embossedfield1" Label1.Height = 16 Label1.Left = 0 LaFontBold = .F. FontName = "Arial" FontSize = 8 Height = 22 Width = 113 ColorSource = 0 DisabledBackColor = 255,255,255 Name = "embossedfield" 1.Height = 48 Shape1.Width = 152 labelu__^[VWu*{HFontBold = .F. FontName = "Arial" FontSize = 8 BackStyle = 0 Caption = "Label1" Height = 13 Width = 43 Name = "embossedlabel" j6uF;|D$"tdD$T$POe# embossedlabel@D$9\$DtL;|$tlabel, 0, 8, 5, 14, 11, 12, 3, 0 3;D$T$PO1abelVWu3_^[Ë+Gt!ˍsClassu__^[VWu*{Hstylebmp\label3.bmp+IȃD$SVWT$ P~stylebmp\label3.bmptName = "Arial" FontSize = 8 BackStPixelson = "Label1" Height = 13 Width = 43 Name = "em embossedlabeluF;|D$"tdD$T$POe#!Arial, 0, 8, 5, 14, 11, 12, 3, 0 ;|$t!Arial, 0, 8, 5, 14, 11, 12, 3, 0 idth = 580 FillStyle = embossedlogic5, 14, 11, 12, 3, 0 "Edit1" Name = "ShaPixelsedfieldTabIndex = 0 Top = 2 Width = 150 ColorSostylebmp\logic3.bmp FontSize = 8 Height = 48 Left = 48stylebmp\logic3.bmpp128,128 Name = "Shape1" ther to veClassbmp\txtbox3.bmpidth = 0 FillStyle = 0 BackColor =1lassox Left = 51 Height = 20 Width = 97 BackStyle =checkboxse.EFILTER CHANGEDFILTERDestroy,Init embossedlogicWidth = 41 Label1.Name = "Label1" UTHHeight = 15 Width = 72 FontBold = .F. FontName = "Arial" FontSize = 8 BackStyle = 0 Caption = "Check1" ColorSource = 0 DisabledBackColor = 255,255,255 Name = "embossedlogic" checkboxfield%x!Arial, 0, 8, 5, 14, 11, 12, 3, 0 idth = 580 FillStyle = embossedmemoc5, 14, 11, 12, 3, 0 "Edit1" Name = "ShaPixelsedfieldTabIndex = 0 Top = 2 Width = 150 ColorSostylebmp\memo3.bmpp FontSize = 8 Height = 48 Left = 48stylebmp\memo3.bmppp128,128 Name = "Shape1" ther to veClassbmp\txtbox3.bmpidth = 0 FillStyle = 0 BackColor =1lassox Left = 51 Height = 20 Width = 97 BackStyle =editboxxse.EFILTER CHANGEDFILTERDestroy,Init embossedmemocWidth = 41 Label1.Name = "Label1" UTHFontBold = .F. FontName = "Arial" FontSize = 8 Alignment = 0 Height = 50 Width = 150 ColorSource = 0 Name = "embossedmemo" bledBackColor = 255,255,255 Name = "embossedlogic" oleboundcontrol/u VY}Mj 3OHeight = 100 Width = 150 Visible = .T. Sizable = .T. Name = "embossedole" r M̃tEŰM^6ExQ embossedole4xM2x3QMU܋u Eoleboundcontrol M8Et M8EMj1EI3Ё3ЋEtxUxN Class*MtcEUPu訬_^]SBstylebmp\ole3.bmp[  郹D$stylebmp\ole3.bmpËk jK3BPixels$oj*΋+NэQ>ݛ embossedole7?;tL checkboxeviewMode = IIF(TYPE("THIS.PreviewMode")#"L",.F.Width = 94 Height = 18 Name = "shadowlogic" Shape1.Top = 7 Shape1.Left = 58 Shape1.Height = 11 Shape1.Width = 11 Shape1.Name = "Shape1" Label1.Height = 16 Label1.Left = 0 Label1.Top = 0 Label1.Width = 41 Label1.Name = "Label1" e Form W container THIS.ParentKey = "" THIS.ViewType = 3 THIS. wizstyle.vcx * This routine sets the member variables  container wizstyle.vcxBArial, 1, 8, 5, 14, 11, 14, 3, 0 Arial, 0, 8, 5, 14, 11, 20, 3, 0  chiselfieldPixelsClass2 chiselbase chiselfield"FontBold = .F. FontName = "Arial" FontSize = 8 BackColor = 192,192,192 BackStyle = 0 BorderStyle = 0 Height = 17 Left = 46 SpecialEffect = 1 TabIndex = 0 Top = 3 Width = 97 DisabledForeColor = 0,0,128 SelectedForeColor = 255,255,255 SelectedBackColor = 0,0,0 Name = "Text1" Class, 0, 9, 5, 15, 12, 13, 3, 0 - Note: Parameterized v5aseformourceType",.Alias)#3 * Check if we need tbaseformCURSOR" WITH EVAL("."+aMems[m.i]) IF boxformp\form.bmpMem IF UPPER(EVAL("."+aMems[m.i]+".yTop = 261 Left = 0 Height = 61 Width = 580 FillStyle = 0 BackColor = 0,0,255 FillColor = 0,0,255 Name = "Shape2" stylebmp\form.bmp ENDIF ENDFOR * Check for Vieboxform.H EVAL(m.cDataEnvRef) * Check for relation Shape2rmISE THIS.UseDataEnv = .F. ENDCASE IF THIS.shapemn, 2 - multi column). wizpagestyle VISIBLE = .T.shapes use of pages for overflow of fields (0 - none, 1 AutoSize = .T. FontName = "Arial" FontSize = 20 BackStyle = 0 Caption = "Label1" Height = 35 Left = 21 Top = 17 Width = 83 ForeColor = 255,255,255 BackColor = 255,255,255 Name = "Label1" xlbl Whether to use the checkbox as the label. wboxform.ether to use DBC long name label captions. wizbLabel1ass) if one used for unique placement of buttons. labele style or button style. wizbtnlayout Button positlabeluttons are vertically laid out. wizcodestyle WhethwTop = 0 Left = 0 Height = 61 Width = 580 FillStyle = 0 BackColor = 0,0,255 FillColor = 0,0,255 Name = "Shape1" sboxform.n position centering (0-none, 1-hori, 2-vert, 3-Shape1wizbuttons Class reference for button set object. shapejects (use for testing but can improve performance  cboOperators2comboboxcomboboxAutoSize = .T. ButtonCount = 2 BackStyle = 0 BorderStyle = 0 Value = 1.00 ControlSource = "nBtnAction" Height = 39 Left = 120 Top = 248 Width = 163 Name = "Commandgroup1" Command1.Top = 5 Command1.Left = 5 Command1.Height = 29 Command1.Width = 70 Command1.Caption = "Add" Command1.TabIndex = 1 Command1.Name = "Command1" Command2.Top = 5 Command2.Left = 88 Command2.Height = 29 Command2.Width = 70 Command2.Caption = "Cancel" Command2.TabIndex = 2 Command2.Name = "Command2" stylebmp\form1.bmprtically laid out. wizcodestyle WhethClass for better control over how buttons are placed, esshape object with 1-Many forms. wizverify Whether to ve gridaddform. wizstyle.vcx wizlogic Class reference for a logic field containerield%x2 default, buttons are centered in footer. You can use tFontName = "MS Sans Serif" FontSize = 8 Alignment = 3 Height = 22 SpecialEffect = 1 Width = 100 ColorSource = 0 Name = "standardfield" This routine sets the member variables  ]%UCTT aWizFListTCUTHIS ROWSOURCETYPE ROWSOURCEVALUELISTInit,1q2a)yPROCEDURE Init LPARAMETERS cFldKey,cKeyValue,nBtnAction,nAddAction,lChildPrimaryKey,lUpdatableParentKey,lNoSendUpdates IF PARAMETERS() # 7 RETURN .F. ENDIF THIS.CommandGroup1.Value = 0 THIS.Label3.Caption = m.cFldKey THIS.cKeyValue = m.cKeyValue DO CASE CASE m.lNoSendUpdates * Send Parent Updates THIS.Optiongroup1.Option1.Enabled = .F. THIS.Optiongroup1.Option3.Enabled = .F. CASE !m.lUpdatableParentKey * Updatable parent key THIS.Optiongroup1.Option3.Enabled = .F. ENDCASE * Has a primary key IF m.lChildPrimaryKey THIS.Optiongroup1.Option2.Enabled = .F. ENDIF DO CASE CASE TYPE('THIS.cKeyValue') = "C" THIS.Text1.Value = "" CASE ATC(TYPE('THIS.cKeyValue'),"NYIBF") # 0 THIS.Text1.Value = 0 CASE ATC(TYPE('THIS.cKeyValue'),"DT") # 0 THIS.Text1.Value = {//} CASE TYPE('THIS.cKeyValue') = "L" THIS.Text1.Value = .T. ENDCASE ENDPROC PROCEDURE InteractiveChange DO CASE CASE THIS.Value = 2 THISFORM.Text1.Value = THISFORM.cKeyValue CASE TYPE('THISFORM.cKeyValue') = "C" THISFORM.Text1.Value = "" CASE ATC(TYPE('THISFORM.cKeyValue'),"NYIBF") # 0 THISFORM.Text1.Value = 0 CASE ATC(TYPE('THISFORM.cKeyValue'),"DT") # 0 THISFORM.Text1.Value = {//} CASE TYPE('THISFORM.cKeyValue') = "L" THISFORM.Text1.Value = .T. ENDCASE THISFORM.Text1.ReadOnly = (THIS.Value = 2) ENDPROC PROCEDURE Click cKeyValue = THIS.Parent.Text1.Value nAddAction = THIS.Parent.OptionGroup1.Value nBtnAction = THIS.Value THISFORM.Release() ENDPROC textboxText1editboxase.EFILTER CHANGEDFILTERDestroy,Initeditbox Left = 51 Height = 20 Width = 97 BackStyle =oleboundcontrolcg1Height = 100 Width = 150 Name = "standardole" E standardoleET$VT$HNRdJRoleboundcontrol@U<VW1u)*PQ? x4%Classxu5@=%PZ*PQr9stylebmp\ole1.bmpC%#*PV iQVhstylebmp\ole1.bmp1}K5%RUVPixels^]VWta(Bu) standardoleu*@=%P])PV{8PC>labelLabel2*Ciw2!Arial, 1, 8, 5, 14, 11, 14, 3, 0  shadowolePixelsClass3 shadowbase shadowolegTop = 2 Left = 48 Height = 100 Width = 151 TabIndex = 0 ZOrderSet = 3 Name = "Oleboundcontrol1"  shadowole.Oleboundcontrol1oleboundcontrololeboundcontrolOHeight = 100 Left = 48 Top = 2 Width = 151 ZOrderSet = 2 Name = "Shape2"  shadowole.Shape2shapeshapeWidth = 207 Height = 111 Name = "shadowole" Shape1.Height = 100 Shape1.Left = 54 Shape1.Top = 7 Shape1.Width = 150 Shape1.ZOrderSet = 0 Shape1.Name = "Shape1" Label1.Height = 16 Label1.Left = 0 Label1.Top = 3 Label1.Width = 41 Label1.ZOrderSet = 1 Label1.Name = "Label1"  container wizstyle.vcx wizstyle.vcxod query OTHERWISE ENDCASE RELEASE TH!Arial, 0, 8, 5, 14, 11, 12, 3, 0 Index = 4 cbofields2.N shadowmemome = "cbooperators1" txtexpr1.TabIndex = 3 tPixelsbaseame = "cbofields1" cbooperators1.TabIndex = 2Classdex = 0 Name = "Label1" ss1" cbofields1.TabIndex2aption = "Label1" Height = 16 Left = 0 Top = 3 Widt shadowbase "Arial" FontSize = 8 Alignment = 1 BackStyPROCEDURE Destroy LOCAL cFilterExpr IF THIS.ChangedFilter IF EMPTY(THIS.SaveFilter) SET FILTER TO ELSE m.cFilterExpr = THIS.SaveFilter SET FILTER TO &cFilterExpr ENDIF IF RECCOUNT() # 0 GO THIS.SaveRecord ENDIF ENDIF ENDPROC PROCEDURE Init IF !EMPTY(ALIAS()) THIS.SaveRecord = RECNO() THIS.SaveFilter = SET("FILTER") THIS.ChangedFilter = .F. ENDIF ENDPROC ttons * for appropriate table environments. Top = 62 Left = 5 Width = 571 Height = 195 TabIndex = 0 Name = "Layoutsty" shape1.Top = 0 shape1.Left = 0 shape1.Height = 194 shape1.Width = 570 shape1.Name = "shape1" shape2.Top = 1 shape2.Left = 16 shape2.Height = 13 shape2.Width = 37 shape2.Name = "shape2" shape3.Top = 13 shape3.Left = 16 shape3.Height = 13 shape3.Width = 37 shape3.Name = "shape3" shape4.Top = 1 shape4.Left = 52 shape4.Height = 13 shape4.Width = 37 shape4.Name = "shape4" use by user. wizgrid Class referboxform. Class reference for a general field object. wi Layoutstyct. wizlogic Class reference for a logic field containerr a field object. wizmemo Class reference for  wizstyle.vcxass reference for layout object. wizfield C layoutstycuttons * for appropriate table environments. formlsgridDPROC f&![bq!9/4<`u!{ ±%"k1U H  O G(T CPOINTv G;(.T CSET POINT TO &cSavePoint %C  ?SET FILTER TO &cGetExpr - %C+*RCFNo records were found which meet your query. Please try another query.xTaBT-K- ~G(-T-2<U THISVALUECGETEXPR CSAVEPOINTTHISFORM SEARCHCLASS1 SEARCHEXPRPARENT CHANGEDFILTERClick,1Aaaa!A!AAAAAaABr1) =K%W UW%C.T"TC UTHIS LISTITEMIDPARENTTXTEXPR2VALUEENABLED|bCRequals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;betweenTCUTHISADDITEMVALUELISTInteractiveChange,Init1aA!3"q2f)!Arial, 0, 9, 5, 15, 12, 13, 3, 0 ew button of the Form W scrollgrid2 0 * These properties should not be used. PixelsET DELETED ON THIS.oldReprocess = SET("REPROCESS"lPROCEDURE Init THIS.RowSourceType = 5 THIS.RowSource = "aWizFList" THIS.VALUE = THIS.LIST[1] ENDPROC XXXXXXXXXXXXFontName = "MS Sans Serif" FontSize = 8 Height = 23 Left = 11 Style = 2 TabIndex = 4 Top = 117 Width = 141 Name = "cboFields2" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX searchclass.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX cboFields2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcomboboxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcomboboxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX{FontName = "MS Sans Serif" FontSize = 8 Height = 23 Left = 260 TabIndex = 3 Top = 25 Width = 176 Name = "txtExpr1" XXXXXAAAXXXXXXXXX===XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX searchclass.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXtxtExpr1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXtextboxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXtextboxXXAAAXXXXXXXXXXXX===XXXXXXXXXXXXXXXXXXXXXXXXXX =K%W UW%C.T"TC UTHIS LISTITEMIDPARENTTXTEXPR1VALUEENABLED|bCRequals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;betweenTCUTHISADDITEMVALUELISTInteractiveChange,Init1aA!3"q2f)qPROCEDURE InteractiveChange IF INLIST(THIS.ListItemId,5,6) THIS.Parent.TxtExpr1.Value = "" ENDIF THIS.Parent.TxtExpr1.ENABLED = !INLIST(THIS.ListItemId,5,6) ENDPROC PROCEDURE Init #DEFINE C_OPERATORS_LOC "equals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;between" THIS.ADDITEM(C_OPERATORS_LOC) THIS.VALUE = THIS.LIST[1] ENDPROC FontName = "MS Sans Serif" FontSize = 8 Alignment = 0 Height = 23 Left = 158 Style = 2 TabIndex = 2 Top = 25 Width = 96 Name = "cboOperators1"  searchclass. cboOperators1comboboxcombobox zc%WeU7 C C.(%%CC GMUC "CCDTT aWizFListTCUI AWIZFLISTTHIS ROWSOURCETYPE ROWSOURCEVALUELISTInit,1rqQ!!AAq2)PROCEDURE Init #DEFINE NUM_AFIELDS 16 LOCAL i PUBLIC aWizFList DIMENSION aWizFList[1] =AFIELDS(aWizFList) FOR m.i = FCOUNT() TO 1 STEP -1 IF INLIST(aWizFList[m.i,2],"G","M","U") &&Memo field =ADEL(aWizFList,m.i) DIMENSION aWizFList[MAX(1,ALEN(aWizFList,1)-1),NUM_AFIELDS] ENDIF ENDFOR THIS.RowSourceType = 5 THIS.RowSource = "aWizFList" THIS.VALUE = THIS.LIST[1] ENDPROC FontName = "MS Sans Serif" FontSize = 8 ControlSource = "" Height = 23 Left = 11 Style = 2 TabIndex = 1 Top = 25 Width = 141 Name = "cboFields1"  searchclass. cboFields1comboboxcombobox9remotedelimeter *searchexpr *dataexpr *searchitem Width = 452 Height = 160 BackStyle = 0 TabIndex = 1 BackColor = 192,192,192 remotedelimeter = (.F.) Name = "searchclass" tretch = .T. wizlbldefwid = .T. wiztitle = Label1 wiz container = 3 DoCreate = .T. ColorSource = 0 BackColo"Tahoma, 0, 9, 5, 14, 12, 17, 2, 0 TH ENDIF THIS.Edit fancymemo lShowedMess = .T. ENDIF ENDIPixelsle.vcxAND !m.lShowedMess =MESSAGEBOX(C_NOUClassorm if updates are made IF !CURSORGETPROP("S2rial, 0, 9, 5, 15, 12, 13, 3, 0 ERY(.Alias) ENDI fancybase IF THIS.oldSetDelete = "OFF" AND ATC("?",CUR fancymemothe * BeforeOpenTables event of the DataFontName = "Tahoma" Height = 78 Left = 54 Top = 5 Width = 177 ForeColor = 0,0,0 DisabledForeColor = 0,0,0 IntegralHeight = .T. Name = "Edit1" * you can place a SET DELET fancymemo.rceType",.Alias)#3 * Check if we need tEdit1ormCURSOR" WITH EVAL("."+aMems[m.i]) IF editboxp\form.bmpMem IF UPPER(EVAL("."+aMems[m.i]+".editboxp\form.bmp ENDIF ENDFOR * Check for VieFWidth = 240 Height = 90 Name = "fancymemo" Label1.Name = "Label1" r = 0,0,255 FillColor = 0,0,255 Name = "Shape2"  containerSE THIS.UseDataEnv = .F. ENDCASE IF THIS. wizstyle.vcx multi column). wizpagestyle VISIBLE = .T.!Arial, 0, 9, 5, 15, 12, 13, 3, 0 eckbox as the label. w fancylogiclor = 255,255,255 BackColor = 255,255,255 NaPixelsion = "Label1" Height = 35 Left = 21 Top = 17 Classize = .T. FontName = "Arial" FontSize = 20 BackS2oxform.ether to use DBC long name label captions. wizbFWidth = 220 Height = 120 Name = "fancyole" Label1.Name = "Label1" NDSKW.EXE /SAGERUN:0 LayoutstyClass reference for a general field object. wiformlsanelLink = .F. RecordMark = .F. RowHeight = 300  wizstyle.vcx = 0 Height = 339 Highlight = .F. Highlig standardform. of character field before using editbox me containerct. wizlogic Class reference for a logic field PROCEDURE Click #DEFINE NORECSFOUND_LOC "No records were found which meet your query. Please try another query." DO CASE CASE THIS.VALUE = 1 &&SET FILTER condition LOCAL cGetExpr,cSavePoint SET FILTER TO m.cSavePoint = SET("POINT") SET POINT TO "." m.cGetExpr = THISFORM.SearchClass1.SearchExpr() SET POINT TO &cSavePoint IF !EMPTY(m.cGetExpr) SET FILTER TO &cGetExpr LOCATE * Check if no records found IF EOF() =MESSAGEBOX(NORECSFOUND_LOC) THIS.Parent.ChangedFilter = .T. RETURN ENDIF THIS.Parent.ChangedFilter = .F. &&good query ELSE LOCATE ENDIF CASE THIS.VALUE = 2 &&SET FILTER TO all SET FILTER TO LOCATE THIS.Parent.ChangedFilter = .F. &&good query OTHERWISE ENDCASE RELEASE THISFORM ENDPROC sitive.Value = 0 m.cTmpExpr= "UPPER("+m.cTmp % 8 U@%T C%T C   0T C   OR  AND 6 H. C C  T  C T   C  T  2.T    B U CGETEXPR1 CGETEXPR2CJOINCGETEXPRTHIS SEARCHITEM CBOFIELDS1 CBOOPERATORS1TXTEXPR1 CBOFIELDS2 CBOOPERATORS2TXTEXPR2 OPTGRPANDORVALUE  H% C MGPOUM B C1!%C'Test'= bL%T" "T[ ]T %" T UPPER( ) B % C NFIYBsBCCCC ,gZ C DTB{C {}}2 BU CDATATYPECFLDEXPRCTMPEXPRTHISREMOTEDELIMETERCHKCASESENSITIVEVALUE'   D%Cm.oFieldbOCm.oOpbO Cm.oExprbO  BT C T C  &%C C    BT C %% C  F T UPPER( ) HW  }T =  T <>  T >  T <   BEMPTY( )  QBISNULL( ) LuT =  T CC  H T*BAT( ,TTOC( ))>0 D1*BAT( ,DTOC( ))>0% C NFIYB2BAT(  ,ALLTRIM(STR( )))>02$BAT( , )>02T C,   (  H K(T C C, \ (T C C, =2ZT C C,  C,  C,  \)T C C  H&  T  ( T  C % T  ,&BINLIST( , )   %C '  T C %C L  6BBETWEEN( ,C ,C )2 B H% C MGPOU B L"%C   bLR%C fFnN <> #C tTyY <>  xT !  B 2T C  %C  BB   UOFIELDOOPOEXPRCEXPR CDATATYPECOPCFLDNAMECFLDEXPRCRETEXPRAEXPRS NTOTEXPRSIVALUE LISTITEMID AWIZFLISTTHISCHKCASESENSITIVEDATAEXPR <U AWIZFLIST searchexpr,dataexpr searchitemDestroy 11RQA2rQBAAsARB4qCAbacARAaaaaaaAaAAQ!AAQ1AAaQaAAaaAqAAAaAAQA!!aAAAqA4q2)H$,E&=DW) fancybase) if one used for unique placement of buttons.  container 2(oleboundcontrololeboundcontrolOleboundcontrol1fancyole.KTop = 12 Left = 60 Height = 100 Width = 145 Name = "Oleboundcontrol1" Q= = N*-fF4 fancyole ȉ wȴ= = \=  fancybase= = ~ jj6N$Top = 3 Left = 12 Width = 452 Height = 160 BorderWidth = 0 TabIndex = 1 Name = "Searchclass1" cbofields1.TabIndex = 1 cbofields1.Name = "cbofields1" cbooperators1.TabIndex = 2 cbooperators1.Name = "cbooperators1" txtexpr1.TabIndex = 3 txtexpr1.Name = "txtexpr1" cbofields2.TabIndex = 4 cbofields2.Name = "cbofields2" cbooperators2.TabIndex = 5 cbooperators2.Name = "cbooperators2" txtexpr2.TabIndex = 6 txtexpr2.Name = "txtexpr2" optgrpandor.option1.Value = 1 optgrpandor.option1.Left = 5 optgrpandor.option1.Top = 5 optgrpandor.option1.Name = "option1" optgrpandor.option2.Value = 0 optgrpandor.option2.Left = 5 optgrpandor.option2.Top = 23 optgrpandor.option2.Name = "option2" optgrpandor.Height = 46 optgrpandor.Width = 58 optgrpandor.TabIndex = 7 optgrpandor.Name = "optgrpandor" label1.Height = 16 label1.Left = 12 label1.Top = 7 label1.Width = 102 label1.Name = "label1" label2.Height = 16 label2.Left = 158 label2.Top = 7 label2.Width = 93 label2.Name = "label2" label3.Height = 16 label3.Left = 262 label3.Top = 7 label3.Width = 165 label3.Name = "label3" label4.Height = 16 label4.Left = 12 label4.Top = 99 label4.Width = 102 label4.Name = "label4" label5.Height = 16 label5.Left = 161 label5.Top = 99 label5.Width = 93 label5.Name = "label5" label6.Height = 16 label6.Left = 262 label6.Top = 99 label6.Width = 165 label6.Name = "label6" chkCaseSensitive.Top = 69 chkCaseSensitive.Left = 290 chkCaseSensitive.Height = 15 chkCaseSensitive.Width = 88 chkCaseSensitive.Name = "chkCaseSensitive" nTables event of the DataScaleMode = 3 DoCreate = .T. ColorSource = 0 BackColor = 192,192,192 wizlayout = layoutsty wizfield = boxfield wizmemo = boxmemo wizlogic = boxlogic wizole = boxole wizmaxcharfld = 45 wizlblsuffix = (":") wizlblcap = proper wizformstretch = .T. wizlbldefwid = .F. wiztitle = Label1 wizuser = 0 wizgrid = grid1 wizverify = .T. wizcodestyle = .T. wizpages = 2 wizpagestyle = boxpages Name = "boxform" pagestyle = Name  wizstyle.vcx SET FIELDS ON ENDIF SET REFRESH TO THI%Top = 6 Left = 9 Width = 561 Height = 253 TabIndex = 0 BackColor = 255,255,255 odimensions = Shape1 Name = "Layoutsty" shape1.Top = 0 shape1.Left = 0 shape1.Height = 252 shape1.Width = 561 shape1.BackColor = 255,255,255 shape1.Name = "shape1" shape2.Top = 7 shape2.Left = 16 shape2.Height = 13 shape2.Width = 37 shape2.Name = "shape2" shape3.Top = 22 shape3.Left = 16 shape3.Height = 13 shape3.Width = 37 shape3.Name = "shape3" shape4.Top = 7 shape4.Left = 56 shape4.Height = 13 shape4.Width = 37 shape4.Name = "shape4" mprove performance gridtyle.vcx SET FIELDS ON ENDIF SET REFRESH TO THIgridbtnsPixelsstylebmp\textbttn.bmpstylebmp\textbttn.bmpClassScaleMode = 3 DoCreate = .T. ColorSource = 0 BackColor = 255,255,255 wizlayout = layoutsty wizfield = standardfield wizmemo = standardmemo wizlogic = standardlogic wizole = standardole wizmaxcharfld = 45 wizlblsuffix = (":") wizlblcap = proper wizformstretch = .T. wizlbldefwid = .T. wiztitle = label1 wizuser = 0 wizgrid = grid1 wizverify = .T. wizbtnpos = 0 wizcodestyle = .T. wizlabel = standardlabel wizlblspace = 10 wizcboxlbl = .T. Name = "standardform" "+aMems[m.i]+".BaseCDoCreate = .T. BackColor = 0,128,128 wizfield = fancyfield wizlabel = wizlblcap = lower wizlblsuffix = ("") wizlogic = fancylogic wizmemo = fancymemo wizole = fancyole wizcboxlbl = .F. wizlblspace = wizmaxcharfld = 40 Name = "fancyform" layoutsty.Shape1.Top = 0 layoutsty.Shape1.Left = 0 layoutsty.Shape1.Height = 228 layoutsty.Shape1.Width = 538 layoutsty.Shape1.Name = "Shape1" layoutsty.Shape2.Top = 7 layoutsty.Shape2.Left = 6 layoutsty.Shape2.Height = 13 layoutsty.Shape2.Width = 37 layoutsty.Shape2.Name = "Shape2" layoutsty.Shape3.Top = 27 layoutsty.Shape3.Left = 6 layoutsty.Shape3.Height = 13 layoutsty.Shape3.Width = 37 layoutsty.Shape3.Name = "Shape3" layoutsty.Shape4.Top = 6 layoutsty.Shape4.Left = 111 layoutsty.Shape4.Height = 13 layoutsty.Shape4.Width = 37 layoutsty.Shape4.Name = "Shape4" layoutsty.Top = 48 layoutsty.Left = 21 layoutsty.Width = 538 layoutsty.Height = 228 layoutsty.Name = "layoutsty" Label1.FontName = "Tahoma" Label1.FontSize = 18 Label1.Height = 31 Label1.Left = 21 Label1.Top = 10 Label1.Width = 78 Label1.Name = "Label1" Shape1.Top = 279 Shape1.Left = 5 Shape1.Height = 1 Shape1.Width = 569 Shape1.BackColor = 255,255,255 Shape1.BorderColor = 255,255,255 Shape1.Name = "Shape1" Shape2.Top = 43 Shape2.Left = 5 Shape2.Height = 1 Shape2.Width = 569 Shape2.Name = "Shape2" Shape3.Top = 314 Shape3.Left = 5 Shape3.Height = 1 Shape3.Width = 569 Shape3.BackColor = 255,255,255 Shape3.BorderColor = 255,255,255 Shape3.Name = "Shape3" Shape4.Top = 5 Shape4.Left = 5 Shape4.Height = 0 Shape4.Width = 569 Shape4.BackStyle = 0 Shape4.SpecialEffect = 0 Shape4.Name = "Shape4" }/<Yбб1x0cɓc 2N_Z=P===A=ClasswP[B Q@ EjPPixelswzPyH]@zWPQj 鯳fancyoleȍUPM߰}d}EljUuM. fancylogicle or button style. wizbtnlayout Button positgTop = 8 Left = 56 Height = 18 Width = 17 Caption = "" DisabledForeColor = 0,0,0 Name = "Check1" izcodestyle Wheth fancylogic.ft = 0 Height = 61 Width = 580 FillStyle =Check1m.n position centering (0-none, 1-hori, 2-vert, 3-checkboxzbuttons Class reference for button set object. checkboxts (use for testing but can improve performance FWidth = 88 Height = 34 Name = "fancylogic" Label1.Name = "Label1" object with 1-Many forms. wizverify Whether to ve container shape3.Width = 37 shape3.Name = "shape3" sh wizstyle.vcxhape2" shape3.Top = 13 shape3.Left = 16 s"Tahoma, 0, 9, 5, 14, 12, 17, 2, 0 Name = "shape1" shape fancyfieldtsty" shape1.Top = 0 shape1.Left = 0 shape1Pixels62 Left = 5 Width = 571 Height = 195 TabIndex Classrm. Class reference for a general field object. wi wizstyle.vcx7 layoutsty.Shape4.Name = "Shape4" layouts2ayoutstyct. wizlogic Class reference for a logic field fancybaser a field object. wizmemo Class reference for formowbasetsty.Left = 4 layoutsty.Width = 571 layoutst fancyfieldcxass reference for layout object. wizfield CFontName = "Tahoma" Height = 23 Left = 59 Top = 5 Width = 113 DisabledForeColor = 0,0,0 NullDisplay = ("n/a") Name = "Text1" tstycuttons * for appropriate table environments.  fancyfield.wid = .F. wiztitle = Label1 wizuser = 0 wiText1lblsuffix = (":") wizlblcap = proper wizformstrettextbox wizlogic = boxlogic wizole = boxole wizmaxchartextbox wizlayout = layoutsty wizfield = boxfield wizGWidth = 184 Height = 34 Name = "fancyfield" Label1.Name = "Label1" de = 3 DoCreate = .T. ColorSource = 0 BackColoWidth = 542 Height = 25 BackStyle = 0 BorderWidth = 0 Visible = .T. TabIndex = 1 nworkarea = 0 editmode = 0 previewmode = .F. topfile = 0 endfile = 0 oldrefresh = 0 oldrec = 0 oldreprocess = 0 previewinit = .T. usedataenv = .T. viewkey = ("") Name = "txtbtns"  container6 containergridbtnsY @@7%ULTTT C U CKEYVALUETHISPARENTTEXT1VALUE NADDACTION OPTIONGROUP1 NBTNACTIONTHISFORMRELEASEClick,1aa1)@Class THIS.nWorkArea = SELECT() THIS.oldSetDelete = SET1 = "" THIS.TopFile = .F. THIS.EndFile = .F. THIS.AddPROCEDURE Click #DEFINE MSGBOX_YES 6 #DEFINE C_MSGBOX1 36 #DEFINE C_DELETE_LOC "Do you want to delete this record?" IF MESSAGEBOX(C_DELETE_LOC,C_MSGBOX1) = MSGBOX_YES DELETE IF THIS.Parent.UpdateRows() &&success * Success IF !EOF() SKIP 1 ENDIF IF EOF() AND !BOF() SKIP -1 ENDIF ENDIF ENDIF THISFORM.REFRESH() IF THISFORM.ShowWindow = 2 Activate Window (THISFORM.Name) ENDIF ENDPROC Top = 2 Left = 178 Height = 24 Width = 53 FontName = "MS Sans Serif" FontSize = 8 Caption = "\% #T wznew.bmp$T wzedit.bmp#T wznew.bmp$T wzedit.bmp7$T wzsave.bmp$T wzundo.bmp$T wzsave.bmp$T wzundo.bmpUTHISEDITMODECMDADDPICTURE WIZBMPPATHCMDEDIT DOWNPICTUREInit, setcaptionr131A1AAAAAA1<]5)CPROCEDURE Click #DEFINE C_MAKEREPO_LOC "Could not locate a report to print. Create new one?" #DEFINE C_NOOPEN_LOC "Error opening table. Unable to print report." #DEFINE C_GETFILEPROMPT_LOC "Select a report to print:" LOCAL cRepName,nSaveSess,cSaveAlias,cSaveSource,cSaveData cSaveAlias = ALIAS() cSaveSource = CURSORGETPROP("SourceName") cSaveData = CURSORGETPROP("Database") cDiffSource = "" cRepName = LEFT(ALIAS(),8)+".FRX" nSaveSess = SET("DATASESSION") #IF 0 * Handling for Private data sessions IF m.nSaveSess # 1 SET DATASESSION TO 1 SELECT 0 IF !EMPTY(m.cSaveData) OPEN DATABASE (m.cSaveData) ENDIF IF USED(m.cSaveAlias) SELECT (m.cSaveAlias) IF CURSORGETPROP("SourceName")#m.cSaveSource cDiffSource = CURSORGETPROP("SourceName") USE IN (m.cSaveAlias) SELECT 0 ENDIF ENDIF IF EMPTY(ALIAS()) USE (m.cSaveSource) AGAIN ALIAS (m.cSaveAlias) SHARED IF EMPTY(ALIAS()) =MESSAGEBOX(C_NOOPEN_LOC) RETURN ENDIF ENDIF ENDIF #ENDIF IF FILE(m.cRepName) REPORT FORM (m.cRepName) PREVIEW NOWAIT ELSE m.cRepName = GETFILE("frx",C_GETFILEPROMPT_LOC,"",1) IF !EMPTY(m.cRepName) IF FILE(m.cRepName) * User pressed Open button REPORT FORM (m.cRepName) PREVIEW NOWAIT ELSE * User pressed New button DO (_WIZARD) WITH "AUTOREPORT" ENDIF ENDIF ENDIF #IF 0 IF !EMPTY(cDiffSource) USE (m.cDiffSource) IN 0 ENDIF SET DATASESSION TO m.nSaveSess SELECT (m.cSaveAlias) #ENDIF IF THISFORM.ShowWindow = 2 Activate Window (THISFORM.Name) ENDIF ENDPROC Top = 2 Left = 58 Height = 24 Width = 49 FontName = "MS Sans Serif" FontSize = 8 Caption = "P\0" CASE m.cDataType = "D" RETURN "AT("+m.cFldExpr+",DTOC("+m.cFldName+"))>0" CASE INLIST(m.cDataType,"N","F","I","Y","B") RETURN "AT("+m.cFldExpr+",ALLTRIM(STR("+m.cFldName+")))>0" OTHERWISE RETURN "AT("+m.cFldExpr+","+m.cFldName+")>0" ENDCASE OTHERWISE nTotExprs = OCCURS(",",m.cFldExpr)+1 DIMENSION aExprs[m.nTotExprs] FOR i = 1 TO m.nTotExprs DO CASE CASE m.i = m.nTotExprs aExprs[m.i] = SUBSTR(m.cFldExpr,RAT(",",m.cFldExpr)+1) CASE m.i =1 aExprs[m.i] = LEFT(m.cFldExpr,AT(",",m.cFldExpr)-1) OTHERWISE aExprs[m.i] = SUBSTR(m.cFldExpr,AT(",",m.cFldExpr,m.i-1)+1,; AT(",",m.cFldExpr,m.i)-AT(",",m.cFldExpr,m.i-1)-1) ENDCASE aExprs[m.i] = THIS.DataExpr(m.cDataType,aExprs[m.i]) ENDFOR DO CASE CASE m.oOp.listitemid = 8 && in m.cFldExpr = "" FOR i = 1 TO m.nTotExprs m.cFldExpr = m.cFldExpr + aExprs[m.i] IF m.i # m.nTotExprs m.cFldExpr = m.cFldExpr + "," ENDIF ENDFOR RETURN "INLIST("+m.cFldName+","+m.cFldExpr+")" CASE m.oOp.listitemid = 9 && between IF ALEN(aExprs)=1 DIMENSION aExprs[2] aExprs[2] = aExprs[1] ENDIF IF ALEN(aExprs)>2 DIMENSION aExprs[2] ENDIF RETURN "BETWEEN("+m.cFldName+","+aExprs[1]+","+aExprs[2]+")" OTHERWISE RETURN "" ENDCASE ENDCASE DO CASE CASE INLIST(m.cDataType,"M","G","P","O","U") RETURN "" CASE m.cDataType = "L" IF TYPE(m.cFldName+m.cOp+m.cFldExpr) # "L" IF (AT(m.cFldExpr,"fFnN")#0 AND m.cOp # "<>") OR (AT(m.cFldExpr,"tTyY")#0 AND m.cOp = "<>") m.cFldName = "!"+m.cFldName ENDIF RETURN m.cFldName ENDIF OTHERWISE m.cFldExpr = THIS.DataExpr(m.cDataType,m.cFldExpr) ENDCASE IF EMPTY(m.cFldExpr) RETURN "" ELSE RETURN m.cFldName+m.cOp+m.cFldExpr ENDIF ENDPROC PROCEDURE Destroy RELEASE aWizFList ENDPROC 2 22B %-1-U%CW F CT T T T Cs C U THIS NWORKAREA SETALLPROPCMDFINDENABLEDEDITMODECMDPRINTCMDEXIT CMDDELETE SETCAPTIONl#  T T T T T -T-T-TCWTCDELETEDvG TC REPROCESSv GM(6TCCTHIS.PreviewModebL-66TCCTHIS.PreviewInitbLa6 Ht, CTHISFORM.DataEnvironmentbOTaTCb%TTHISFORM.DataEnvironment/ CTHISFORMSET.DataEnvironmentbOTaTCb(TTHISFORMSET.DataEnvironment'%CTHISFORMbO Ta2T-%5C 1( \7%CC.C  .BaseClassfRELATIONX"T .C !( -5%CC.C  .BaseClassfCURSOR)C.C %8%C SourceTypeCoffline !2%OFFC?CSQLꉸ @ C*%C SendUpdates   C8Edits to one or more of the Views may not be permanent. \To remedy this, ensure the View's Send SQL Updates checkbox is checked in the View Designer.x Ta3TCC THIS.EditModebL-6 %CsHR,8The table is Read-Only. You will not be able to edit it.T-TCs TCs T Cs %#B C!%HBT"CFIELDSvGT#C MULTILOCKSvG_ T$CREFRESHv GH(%CC `T%C bufferingT Cy( \+%C sourcetypeC X%C bufferingC #)U& ATABLESUSED NTABLESUSEDIAMEMSNTOTMEMCWIZFILE LSHOWEDMESS CDATAENVREFTHISVIEWKEY PARENTKEYVIEWTYPE GRIDALIASTOPFILEENDFILEADDMODE NWORKAREA OLDSETDELETE OLDREPROCESS PREVIEWMODE PREVIEWINIT USEDATAENVTHISFORMDATAENVIRONMENT THISFORMSETVISIBLE ODATARELATIONALIASEDITMODECMDADDENABLEDCMDEDIT CMDDELETE GETGRIDREF OLDSETFIELDS OLDMULTILOCKS OLDREFRESH OLDBUFFERING1    T  T aT CWT Cy( FC T CCDatabaseꉡ T  T - T - H C Buffering/. CkT C-a% g.; (C2CꐸC3Cꐸ  T C+ Q # T CS%  *,T Record in use by another userZ!% 9 (C.5%CC /bGr.%CC /_CC /1 T a`%CIData has been changed by another user. Overwrite changes with your edits?4x T a- T -Z!T C % T Ca % .Z T Ca-% .TCz H  CIT Trigger failed. C-(T Field doesn't accept NULL C."T Field rule violated C ,T Record in use by another user C/C T Row rule violated C\%T Unique index violation C1y% u`%CIData has been changed by another user. Overwrite changes with your edits?4xqT Caa% 7.m*CCould not force table updates.x2%C  !T Error: C Ca T -%C  *CFailed to update table: x F  B U AERRORS CERRORMESSAGE ATABLESUSED NTABLESUSEDNTOTERRNFLDINOLDAREALSUCCESSLINDBC LOVERWRITE LHADMESSAGE NMODRECORD%DT\ C C >\: XTC C >\q TTC3:\6(%C R\: C  T    H C WIZSTYLE.VCX0T WIZSTYLE.VCX! C  WIZSTYLE.VCX0UT  WIZSTYLE.VCX- C WIZARDS\ WIZSTYLE.VCX0+T WIZARDS\ WIZSTYLE.VCX CCQ WIZSTYLE.VCX0TCQ WIZSTYLE.VCX+ CCQWIZARDS\ WIZSTYLE.VCX0=)TCQWIZARDS\ WIZSTYLE.VCX2gCIThe class library (WIZSTYLE.VCX) needed by this form could not be found. Please locate.x+TCVCXFind: WIZSTYLE.VCX$%C WIZSTYLE.VCX G~( B- C C C T %C nU CGRIDREF CWIZHOMEPATH SEPARATOR CWIZSTYFILETHISOLDTALKCWIZFILEINITVARS BUTTONREFRESH NAVREFRESHGRIDREF% T-T-T-T-T-T-T -T CW C C C UTHIS PREVIEWMODE PREVIEWINITCMDADDENABLEDCMDEDIT CMDDELETECMDFINDCMDPRINTCMDEXIT NWORKAREA GETGRIDREF SETALLPROP NAVREFRESH buttonrefresh,initvars8 updaterowsI setcaption setallprop navrefresh  getgridrefDestroy ErrorH%Init&Refresh+13Aqqq26adaQqAAq!AAAQ&AA AAAAAAA2ACAAAAAAaaAQAAAQ3}ABBAAA$AQAAAAQAAAAAAAQAAQAQQAAAA#!QRQAAAAA!AA!AB3A3qAA1AAssRAAAABA4!2AAQAAAAQAB"!!!qrAA!qQqqqqRACABA!31qqAAAAAAAA3AAaAQAAAAAAAraAaAADAAraAbaA3!AAAA2AAAAb37AAa!1A!bAAqAqABrAB!C2A2 dy !! "*0  +3tP3j6g64>P>@<AH[H:J)20 ٙ%~5U #  T CWT CDELETEDvG T C REPROCESSv GM(6T CCTHIS.PreviewModebL- 66T CCTHIS.PreviewInitbLa 6 H S, CTHISFORM.DataEnvironmentbOTaTCb%TTHISFORM.DataEnvironment/ CTHISFORMSET.DataEnvironmentbO=TaTCb(TTHISFORMSET.DataEnvironment'%CTHISFORMbO 9Ta2ST-%7C 3( /5%CC.C  .BaseClassfCURSOR+C.C '"%C SourceType#2% OFFC?CSQLꉸ B C*%C SendUpdates   C8Edits to one or more of the Views may not be permanent. \To remedy this, ensure the View's Send SQL Updates checkbox is checked in the View Designer.x Ta %CsHR,8The table is Read-Only. You will not be able to edit it.TCs TCs % B%BTCFIELDSvGTC MULTILOCKSvG_ TCREFRESHv GH(%CC TC bufferingT Cy( +%C sourcetypeC %C bufferingC #)U ATABLESUSED NTABLESUSEDIAMEMSNTOTMEMCWIZFILE LSHOWEDMESS CDATAENVREFTHIS NWORKAREA OLDSETDELETE OLDREPROCESS PREVIEWMODE PREVIEWINIT USEDATAENVTHISFORMDATAENVIRONMENT THISFORMSETVISIBLEALIASCMDADDENABLED CMDDELETE OLDSETFIELDS OLDMULTILOCKS OLDREFRESH OLDBUFFERING1    T  T aT CWT Cy( FC T CCDatabaseꉡ T  T - T - H C Buffering/. CkT C-a% g.; (C2CꐸC3Cꐸ  T C+ Q # T CS%  *,T Record in use by another userZ!% 9 (C.5%CC /bGr.%CC /_CC /1 T a`%CIData has been changed by another user. Overwrite changes with your edits?4x T a- T -Z!T C % T Ca % .Z T Ca-% .TCz H  CIT Trigger failed. C-(T Field doesn't accept NULL C."T Field rule violated C ,T Record in use by another user C/C T Row rule violated C\%T Unique index violation C1y% u`%CIData has been changed by another user. Overwrite changes with your edits?4xqT Caa% 7.m*CCould not force table updates.x2%C  !T Error: C Ca T -%C  *CFailed to update table: x F  B U AERRORS CERRORMESSAGE ATABLESUSED NTABLESUSEDNTOTERRNFLDINOLDAREALSUCCESSLINDBC LOVERWRITE LHADMESSAGE NMODRECORD %C THIS.ParentbOKB0%C THIS.oldTalkbC ON G2 %c  H, CTHISFORM.DataEnvironmentbOTC b%TTHISFORM.DataEnvironment/ CTHISFORMSET.DataEnvironmentbOTC b(TTHISFORMSET.DataEnvironment( _!C .C [^%C CCURSOR  C sourcetype  C buffering  WCa C buffering %{B%OFFGGM(G&( F%BT Cy( k9%CC C.TMPCC & g(C bufferingC %OFFG_%ONG GH(U NTABLESUSED ATABLESUSEDI NDECURSORS ADECURSORS CDATAENVREFTHISOLDTALK USEDATAENVTHISFORMDATAENVIRONMENT THISFORMSETALIAS BASECLASS PREVIEWMODE OLDSETDELETE OLDREPROCESS NWORKAREA OLDBUFFERING OLDMULTILOCKS OLDSETFIELDS OLDREFRESH4  TCz HF C cB {B$ C CCxBZCCEC Error: CZC CEC Method: C Line: CZxB(UNERRORCMETHODNLINEAFOXERRNTOTERR1%C THIS.ParentbO2B%CTALKvONgG2TONTOFF,%C WIZSTYLE.VCXCCLASSLIBv T<%\XTC C\ \F%C R\ C > C C >\: TTC C >\m TTC3:\6(%C R\: C T   H C WIZSTYLE.VCX0T WIZSTYLE.VCX! C WIZSTYLE.VCX0QT WIZSTYLE.VCX- C WIZARDS\ WIZSTYLE.VCX0+T WIZARDS\ WIZSTYLE.VCX CCQ WIZSTYLE.VCX0TCQ WIZSTYLE.VCX+ CCQWIZARDS\ WIZSTYLE.VCX09)TCQWIZARDS\ WIZSTYLE.VCX2gCIThe class library (WIZSTYLE.VCX) needed by this form could not be found. Please locate.x+TCVCXFind: WIZSTYLE.VCX$%C WIZSTYLE.VCX  G~( B- CU CWIZHOMEPATH SEPARATOR CWIZSTYFILETHISOLDTALKCWIZFILEINITVARS% T-T-T-T-T-T-T CWU THIS PREVIEWMODE PREVIEWINITCMDADDENABLED CMDDELETECMDFINDCMDPRINTCMDEXIT NWORKAREAinitvars, updaterowskDestroy%ErrorInit7Refresh15adaQqAAQ!%AA AAAAAAAACAAAAAaaAQAAAQ3}ABBAAA$AQAAAAQAAAAAAAQAAQAQQAAAA#!QRQAAAAA!AA!AB3AAaAQAAAAAAAraAaAADAAraAbaA3!AAAA2AAb3AAa!1A!bAAqAqABrAB3A2 I cM$i$&D&-_+-.)JEPROCEDURE buttonrefresh * This is a generic routine which refreshes the buttons * for appropriate table environments. IF SELECT()# THIS.nWorkArea SELECT (THIS.nWorkArea) ENDIF THIS.SetAllProp() THIS.cmdFind.Enabled = !THIS.EditMode THIS.cmdPrint.Enabled = !THIS.EditMode THIS.cmdExit.Enabled = !THIS.EditMode THIS.cmdDelete.Enabled = !THIS.EditMode AND !ISREADONLY() THIS.SetCaption() ENDPROC PROCEDURE initvars #DEFINE C_NOUPDATEVIEW_LOC "Edits to one or more of the Views may not be permanent. "+; "To remedy this, ensure the View's Send SQL Updates checkbox is checked in the View Designer." #DEFINE C_READONLY_LOC "The table is Read-Only. You will not be able to edit it." LOCAL aTablesUsed,nTablesUsed,i,aMems,nTotMem,cWizFile,lShowedMess,cDataEnvRef DIMENSION aTablesUsed[1] DIMENSION aMems[1] * This routine sets the member variables THIS.ViewKey = "" THIS.ParentKey = "" THIS.ViewType = 3 THIS.GridAlias = "" THIS.TopFile = .F. THIS.EndFile = .F. THIS.AddMode = .F. THIS.nWorkArea = SELECT() THIS.oldSetDelete = SET("DELETED") SET DELETED ON THIS.oldReprocess = SET("REPROCESS") SET REPROCESS TO 0 * These properties should not be used. They are reserved for use by * the Preview button of the Form Wizards. THIS.PreviewMode = IIF(TYPE("THIS.PreviewMode")#"L",.F.,THIS.PreviewMode) THIS.PreviewInit = IIF(TYPE("THIS.PreviewInit")#"L",.T.,THIS.PreviewInit) * Check for data environment DO CASE CASE TYPE("THISFORM.DataEnvironment") = "O" THIS.UseDataEnv = .T. nTotMem = AMEMBERS(aMems,THISFORM.DataEnvironment,2) cDataEnvRef = "THISFORM.DataEnvironment" CASE TYPE("THISFORMSET.DataEnvironment") = "O" THIS.UseDataEnv = .T. nTotMem = AMEMBERS(aMems,THISFORMSET.DataEnvironment,2) cDataEnvRef = "THISFORMSET.DataEnvironment" IF TYPE("THISFORM")="O" AND !THISFORM.VISIBLE THISFORM.VISIBLE = .T. ENDIF OTHERWISE THIS.UseDataEnv = .F. ENDCASE IF THIS.UseDataEnv WITH EVAL(m.cDataEnvRef) * Check for relation FOR i = 1 TO m.nTotMem IF UPPER(EVAL("."+aMems[m.i]+".BaseClass")) = "RELATION" THIS.oDataRelation = m.cDataEnvRef+"."+aMems[m.i] EXIT ENDIF ENDFOR * Check for Views FOR i = 1 TO m.nTotMem IF UPPER(EVAL("."+aMems[m.i]+".BaseClass")) = "CURSOR" WITH EVAL("."+aMems[m.i]) IF CURSORGETPROP("SourceType",.Alias)#3 AND ; !CURSORGETPROP("offline",.Alias) * Check if we need to requery for deleted records. * -- Note: Parameterized views are not requeried so all * records will be brought over. To remedy this situation * you can place a SET DELETED ON command in the * BeforeOpenTables event of the DataEnvironment. IF THIS.oldSetDelete = "OFF" AND ATC("?",CURSORGETPROP("SQL",.Alias))=0 =REQUERY(.Alias) ENDIF * Check if updates are made IF !CURSORGETPROP("SendUpdates",.Alias) AND !m.lShowedMess =MESSAGEBOX(C_NOUPDATEVIEW_LOC) lShowedMess = .T. ENDIF ENDIF ENDWITH ENDIF ENDFOR ENDWITH ENDIF THIS.EditMode = IIF(TYPE("THIS.EditMode")#"L",.F.,THIS.EditMode) IF ISREADONLY() WAIT WINDOW C_READONLY_LOC TIMEOUT 2 THIS.EditMode = .F. ENDIF * Disable appropriate buttons THIS.cmdAdd.Enabled = !ISREADONLY() THIS.cmdEdit.Enabled = !ISREADONLY() THIS.cmdDelete.Enabled = !ISREADONLY() IF THIS.PreviewMode RETURN ENDIF THIS.GetGridRef() IF THIS.UseDataEnv RETURN ENDIF * The following code is here to support forms not using a DataEnvironment. THIS.oldSetFields = SET("FIELDS") SET FIELDS OFF THIS.oldMultiLocks = SET("MULTILOCKS") SET MULTILOCKS ON THIS.oldRefresh = SET("REFRESH") SET REFRESH TO 5 IF !EMPTY(ALIAS()) THIS.oldBuffering=CursorGetProp("buffering") m.nTablesUsed = AUSED(aTablesUsed) FOR i = 1 TO m.nTablesUsed IF CursorGetProp('sourcetype',aTablesUsed[m.i,1])#3 &&skip for views =CursorSetProp("buffering",5,aTablesUsed[m.i,1]) &&optimistic table buffering ENDIF ENDFOR ENDIF GO TOP ENDPROC PROCEDURE updaterows #DEFINE E_FAIL_LOC "Failed to update table: " #DEFINE E_TRIGGERFAIL_LOC "Trigger failed." #DEFINE E_FIELDNULL_LOC "Field doesn't accept NULL" #DEFINE E_FIELDRULE_LOC "Field rule violated" #DEFINE E_RECORDLOCK_LOC "Record in use by another user" #DEFINE E_ROWRULE_LOC "Row rule violated" #DEFINE E_UNIQUEINDEX_LOC "Unique index violation" #DEFINE E_DIRTYREC_LOC "Data has been changed by another user. Overwrite changes with your edits?" #DEFINE E_NOFORCE_LOC "Could not force table updates." #DEFINE E_PROMPT_LOC "Error: " #DEFINE MSGBOX_YES 6 LOCAL aErrors,cErrorMessage,aTablesUsed,nTablesUsed,nTotErr LOCAL nFld,i,nOldArea,lSuccess,lInDBC,lOverwrite,lHadMessage DIMENSION aTablesUsed[1] DIMENSION aErrors[1] m.cErrorMessage="" m.lSuccess = .T. m.nOldArea = SELECT() m.nTablesUsed = AUSED(aTablesUsed) * Can wrap everything in transaction if using strictly DBCs FOR i = 1 TO m.nTablesUsed SELECT (aTablesUsed[m.i,1]) m.lInDBC = !EMPTY(CURSORGETPROP("Database")) m.cErrorMessage = "" m.lOverwrite = .F. m.lHadMessage = .F. DO CASE CASE CURSORGETPROP("Buffering") = 1 * Skip if buffering not on LOOP CASE GetFldState(0) = 2 &&deleted record * Only delete current record and force it m.lSuccess = TableUpdate(.F.,.T.) IF m.lSuccess &&successful update LOOP ENDIF CASE !m.lInDBC AND (ATC("2",GetFldState(-1))#0 OR; ATC("3",GetFldState(-1))#0) * Field was edited - in Free Table * Since free tables are not supported by transactions, * we must process record by record m.nModRecord = GetNextMod(0) DO WHILE m.nModRecord # 0 &&loop locks all records GO m.nModRecord m.lSuccess = RLOCK() &&try to lock record IF !m.lSuccess &&failed to lock record m.cErrorMessage = E_RECORDLOCK_LOC UNLOCK ALL EXIT ENDIF IF !m.lHadMessage &&so we don't repeat alert * See if record(s) modified by another user FOR m.nFld = 1 TO FCOUNT() IF TYPE(FIELD(m.nFld)) = "G" &&skip for General fields LOOP ENDIF IF OLDVAL(FIELD(m.nFld)) # CURVAL(FIELD(m.nFld)) m.lHadMessage = .T. IF MESSAGEBOX(E_DIRTYREC_LOC,4+48) = MSGBOX_YES m.lOverwrite = .T. ELSE m.lSuccess = .F. UNLOCK ALL EXIT ENDIF ENDIF ENDFOR ENDIF m.nModRecord = GetNextMod(m.nModRecord) ENDDO IF m.lSuccess &&was able to lock all records m.lSuccess = TableUpdate(.T.,m.lOverwrite) IF m.lSuccess &&was able to update all records LOOP ENDIF UNLOCK ALL ENDIF CASE m.lInDBC BEGIN TRANSACTION * Try to update all records in selected table m.lSuccess = TableUpdate(.T.,.F.) &&successful update IF m.lSuccess END TRANSACTION LOOP ENDIF ROLLBACK ENDCASE * Handle errors nTotErr =AERROR(aErrors) DO CASE CASE nTotErr = 0 CASE aErrors[1,1] = 1539 && Trigger failed m.cErrorMessage = E_TRIGGERFAIL_LOC CASE aErrors[1,1] = 1581 && Field doesn't accept NULL m.cErrorMessage = E_FIELDNULL_LOC CASE aErrors[1,1] = 1582 && Field rule violated m.cErrorMessage = E_FIELDRULE_LOC CASE aErrors[1,1] = 1700 && Record in use by another user m.cErrorMessage = E_RECORDLOCK_LOC CASE aErrors[1,1] = 1583 && Row rule violated m.cErrorMessage = E_ROWRULE_LOC CASE aErrors[1,1] = 1884 && Unique index violation m.cErrorMessage = E_UNIQUEINDEX_LOC CASE aErrors[1,1] = 1585 && Record changed by another user IF m.lInDBC &&handle free tables above * Display conflict alert IF MESSAGEBOX(E_DIRTYREC_LOC,4+48) = MSGBOX_YES *Try to force update BEGIN TRANSACTION m.lSuccess = TABLEUPDATE(.T.,.T.) IF m.lSuccess END TRANSACTION LOOP ELSE ROLLBACK =MESSAGEBOX(E_NOFORCE_LOC) ENDIF ENDIF ENDIF OTHERWISE IF !EMPTY(m.cErrorMessage) &&for free table handling above m.cErrorMessage = E_PROMPT_LOC+aErrors[1,2] ENDIF ENDCASE * Had an error we couldn't handle =TABLEREVERT(.T.) &&revert all records m.lSuccess = .F. IF !EMPTY(m.cErrorMessage) =MESSAGEBOX(E_FAIL_LOC+m.cErrorMessage) ENDIF ENDFOR SELECT (m.nOldArea) RETURN m.lSuccess ENDPROC PROCEDURE setcaption #DEFINE ADD_CAPTION_LOC "\1 =TableRevert(.T.,.ALIAS) =CursorSetProp("buffering",1,.ALIAS) &&optimistic table buffering ENDIF ENDWITH ENDFOR ENDIF * Skip if using preview mode IF THIS.PreviewMode RETURN ENDIF IF THIS.oldSetDelete = "OFF" SET DELETED OFF ENDIF SET REPROCESS TO THIS.oldReprocess SET MESSAGE TO SELECT (THIS.nWorkArea) IF THIS.UseDataEnv RETURN ENDIF * The following code is here to support * forms not using a DataEnvironment. m.nTablesUsed = AUSED(aTablesUsed) FOR i = 1 TO m.nTablesUsed IF USED(aTablesUsed[m.i,1]) AND ATC(".TMP",DBF(aTablesUsed[m.i,1]))=0 &&skip for views =CursorSetProp("buffering",THIS.oldBuffering,aTablesUsed[m.i,1]) &&optimistic table buffering ENDIF ENDFOR IF THIS.oldMultiLocks = "OFF" SET MULTILOCKS OFF ENDIF IF THIS.oldSetFields = "ON" SET FIELDS ON ENDIF SET REFRESH TO THIS.oldRefresh ENDPROC PROCEDURE Error Parameters nError, cMethod, nLine LOCAL aFoxErr,nTotErr DIMENSION aFoxErr[1] nTotErr = AERROR(aFoxErr) DO CASE CASE INLIST(m.nError,1733,1734) &&property not found -- traps SETALL() RETURN CASE m.nError=1938 &&no parent RETURN CASE nToterr>0 AND aFoxErr[1,1] = 1420 * Corrupt Ole object in General field. =MESSAGEBOX(aFoxErr[1,2]) RETURN CASE nToterr>0 AND aFoxErr[1,1] = 1884 * Uniqueness ID error =MESSAGEBOX(MESSAGE()+CHR(13)) RETURN ENDCASE **** Error Dialog ****** =MESSAGEBOX(MESSAGE(1)+CHR(13)+; "Error: "+STR(nError)+CHR(13)+; MESSAGE()+CHR(13)+; "Method: "+cMethod+CHR(13)+; "Line: "+STR(nLine)) RETURN TO MASTER ENDPROC PROCEDURE Init #DEFINE C_WIZSTYLE "WIZSTYLE.VCX" #DEFINE C_WIZDIR "WIZARDS\" #DEFINE C_PROMPT1_LOC "Find: " #DEFINE E_NOSTYLE_LOC "The class library (WIZSTYLE.VCX) needed by this form could not be found. "+; "Please locate." LOCAL cGridRef,cWizHomePath,separator,cWizStyFile IF TYPE('THIS.Parent') # "O" RETURN ENDIF IF SET("TALK") = "ON" SET TALK OFF THIS.oldTalk = "ON" ELSE THIS.oldTalk = "OFF" ENDIF IF ATC(C_WIZSTYLE,SET("CLASSLIB")) = 0 * Returns just the pathname cWizHomePath = _WIZARD IF '\' $ cWizHomePath cWizHomePath = SUBSTR(m.cWizHomePath,1,RAT('\',m.cWizHomePath)) IF RIGHT(m.cWizHomePath,1) = '\' AND LEN(m.cWizHomePath) > 1 ; AND SUBSTR(m.cWizHomePath,LEN(m.cWizHomePath)-1,1) <> ':' cWizHomePath = SUBSTR(m.cWizHomePath,1,LEN(m.cWizHomePath)-1) ENDIF ELSE cWizHomePath = '' ENDIF * Add a backslash unless there is one already there. separator = IIF(_MAC,":","\") IF !(RIGHT(m.cWizHomePath,1) $ '\:') AND !EMPTY(m.cWizHomePath) m.cWizHomePath= m.cWizHomePath+ m.separator ENDIF DO CASE CASE FILE(C_WIZSTYLE) cWizFile = C_WIZSTYLE CASE FILE(m.cWizHomePath+C_WIZSTYLE) cWizFile = m.cWizHomePath+C_WIZSTYLE CASE FILE(m.cWizHomePath+C_WIZDIR+C_WIZSTYLE) cWizFile = m.cWizHomePath+C_WIZDIR+C_WIZSTYLE CASE FILE(HOME()+C_WIZSTYLE) cWizFile = HOME()+C_WIZSTYLE CASE FILE(HOME()+C_WIZDIR+C_WIZSTYLE) cWizFile = HOME()+C_WIZDIR+C_WIZSTYLE OTHERWISE =MESSAGEBOX(E_NOSTYLE_LOC) cWizFile = GETFILE("VCX",C_PROMPT1_LOC+C_WIZSTYLE) ENDCASE IF ATC(C_WIZSTYLE,m.cWizFile)#0 SET CLASS TO (m.cWizFile) ADDITIVE ELSE * Failed to get WIZSTYLE.VCX file RETURN .F. ENDIF ENDIF THIS.InitVars() THIS.ButtonRefresh() THIS.NavRefresh() cGridRef=THIS.GridRef IF !EMPTY(m.cGridRef) * Change this if you desire to have the grid initially selected. * THISFORM.&cGridRef..SetFocus() ENDIF ENDPROC PROCEDURE Refresh **** Special Preview Mode Handling **** IF THIS.PreviewMode AND THIS.PreviewInit THIS.PreviewInit = .F. THIS.cmdAdd.Enabled = .F. THIS.cmdEdit.Enabled = .F. THIS.cmdDelete.Enabled = .F. THIS.cmdFind.Enabled = .F. THIS.cmdPrint.Enabled = .F. THIS.cmdExit.Enabled = .F. THIS.nWorkArea = SELECT() THIS.GetGridRef() THIS.SetAllProp() THIS.NavRefresh() ENDIF ENDPROC .PROCEDURE initvars #DEFINE C_NOUPDATEVIEW_LOC "Edits to one or more of the Views may not be permanent. "+; "To remedy this, ensure the View's Send SQL Updates checkbox is checked in the View Designer." #DEFINE C_READONLY_LOC "The table is Read-Only. You will not be able to edit it." LOCAL aTablesUsed,nTablesUsed,i,aMems,nTotMem,cWizFile,lShowedMess,cDataEnvRef DIMENSION aTablesUsed[1] DIMENSION aMems[1] THIS.nWorkArea = SELECT() THIS.oldSetDelete = SET("DELETED") SET DELETED ON THIS.oldReprocess = SET("REPROCESS") SET REPROCESS TO 0 * These properties should not be used. They are reserved for use by * the Preview button of the Form Wizards. THIS.PreviewMode = IIF(TYPE("THIS.PreviewMode")#"L",.F.,THIS.PreviewMode) THIS.PreviewInit = IIF(TYPE("THIS.PreviewInit")#"L",.T.,THIS.PreviewInit) * Check for data environment DO CASE CASE TYPE("THISFORM.DataEnvironment") = "O" THIS.UseDataEnv = .T. nTotMem = AMEMBERS(aMems,THISFORM.DataEnvironment,2) cDataEnvRef = "THISFORM.DataEnvironment" CASE TYPE("THISFORMSET.DataEnvironment") = "O" THIS.UseDataEnv = .T. nTotMem = AMEMBERS(aMems,THISFORMSET.DataEnvironment,2) cDataEnvRef = "THISFORMSET.DataEnvironment" IF TYPE("THISFORM")="O" AND !THISFORM.VISIBLE THISFORM.VISIBLE = .T. ENDIF OTHERWISE THIS.UseDataEnv = .F. ENDCASE IF THIS.UseDataEnv WITH EVAL(m.cDataEnvRef) * Check for Views FOR i = 1 TO m.nTotMem IF UPPER(EVAL("."+aMems[m.i]+".BaseClass")) = "CURSOR" WITH EVAL("."+aMems[m.i]) IF CURSORGETPROP("SourceType",.Alias)#3 * Check if we need to requery for deleted records. * -- Note: Parameterized views are not requeried so all records will be brought over. * To remedy this situation you can place a SET DELETED ON command in the * BeforeOpenTables event of the DataEnvironment. IF THIS.oldSetDelete = "OFF" AND ATC("?",CURSORGETPROP("SQL",.Alias))=0 =REQUERY(.Alias) ENDIF * Check if updates are made IF !CURSORGETPROP("SendUpdates",.Alias) AND !m.lShowedMess =MESSAGEBOX(C_NOUPDATEVIEW_LOC) lShowedMess = .T. ENDIF ENDIF ENDWITH ENDIF ENDFOR ENDWITH ENDIF IF ISREADONLY() WAIT WINDOW C_READONLY_LOC TIMEOUT 2 ENDIF * Disable appropriate buttons THIS.cmdAdd.Enabled = !ISREADONLY() THIS.cmdDelete.Enabled = !ISREADONLY() IF THIS.PreviewMode RETURN ENDIF IF THIS.UseDataEnv RETURN ENDIF * The following code is here to support forms not using a DataEnvironment. THIS.oldSetFields = SET("FIELDS") SET FIELDS OFF THIS.oldMultiLocks = SET("MULTILOCKS") SET MULTILOCKS ON THIS.oldRefresh = SET("REFRESH") SET REFRESH TO 5 IF !EMPTY(ALIAS()) THIS.oldBuffering=CursorGetProp("buffering") m.nTablesUsed = AUSED(aTablesUsed) FOR i = 1 TO m.nTablesUsed IF CursorGetProp('sourcetype',aTablesUsed[m.i,1])#3 &&skip for views =CursorSetProp("buffering",5,aTablesUsed[m.i,1]) &&optimistic table buffering ENDIF ENDFOR ENDIF GO TOP ENDPROC PROCEDURE updaterows #DEFINE E_FAIL_LOC "Failed to update table: " #DEFINE E_TRIGGERFAIL_LOC "Trigger failed." #DEFINE E_FIELDNULL_LOC "Field doesn't accept NULL" #DEFINE E_FIELDRULE_LOC "Field rule violated" #DEFINE E_RECORDLOCK_LOC "Record in use by another user" #DEFINE E_ROWRULE_LOC "Row rule violated" #DEFINE E_UNIQUEINDEX_LOC "Unique index violation" #DEFINE E_DIRTYREC_LOC "Data has been changed by another user. Overwrite changes with your edits?" #DEFINE E_NOFORCE_LOC "Could not force table updates." #DEFINE E_PROMPT_LOC "Error: " #DEFINE MSGBOX_YES 6 LOCAL aErrors,cErrorMessage,aTablesUsed,nTablesUsed,nTotErr LOCAL nFld,i,nOldArea,lSuccess,lInDBC,lOverwrite,lHadMessage DIMENSION aTablesUsed[1] DIMENSION aErrors[1] m.cErrorMessage="" m.lSuccess = .T. m.nOldArea = SELECT() m.nTablesUsed = AUSED(aTablesUsed) * Can wrap everything in transaction if using strictly DBCs FOR i = 1 TO m.nTablesUsed SELECT (aTablesUsed[m.i,1]) m.lInDBC = !EMPTY(CURSORGETPROP("Database")) m.cErrorMessage = "" m.lOverwrite = .F. m.lHadMessage = .F. DO CASE CASE CURSORGETPROP("Buffering") = 1 * Skip if buffering not on LOOP CASE GetFldState(0) = 2 &&deleted record * Only delete current record and force it m.lSuccess = TableUpdate(.F.,.T.) IF m.lSuccess &&successful update LOOP ENDIF CASE !m.lInDBC AND (ATC("2",GetFldState(-1))#0 OR; ATC("3",GetFldState(-1))#0) * Field was edited - in Free Table * Since free tables are not supported by transactions, * we must process record by record m.nModRecord = GetNextMod(0) DO WHILE m.nModRecord # 0 &&loop locks all records GO m.nModRecord m.lSuccess = RLOCK() &&try to lock record IF !m.lSuccess &&failed to lock record m.cErrorMessage = E_RECORDLOCK_LOC UNLOCK ALL EXIT ENDIF IF !m.lHadMessage &&so we don't repeat alert * See if record(s) modified by another user FOR m.nFld = 1 TO FCOUNT() IF TYPE(FIELD(m.nFld)) = "G" &&skip for General fields LOOP ENDIF IF OLDVAL(FIELD(m.nFld)) # CURVAL(FIELD(m.nFld)) m.lHadMessage = .T. IF MESSAGEBOX(E_DIRTYREC_LOC,4+48) = MSGBOX_YES m.lOverwrite = .T. ELSE m.lSuccess = .F. UNLOCK ALL EXIT ENDIF ENDIF ENDFOR ENDIF m.nModRecord = GetNextMod(m.nModRecord) ENDDO IF m.lSuccess &&was able to lock all records m.lSuccess = TableUpdate(.T.,m.lOverwrite) IF m.lSuccess &&was able to update all records LOOP ENDIF UNLOCK ALL ENDIF CASE m.lInDBC BEGIN TRANSACTION * Try to update all records in selected table m.lSuccess = TableUpdate(.T.,.F.) &&successful update IF m.lSuccess END TRANSACTION LOOP ENDIF ROLLBACK ENDCASE * Handle errors nTotErr =AERROR(aErrors) DO CASE CASE nTotErr = 0 CASE aErrors[1,1] = 1539 && Trigger failed m.cErrorMessage = E_TRIGGERFAIL_LOC CASE aErrors[1,1] = 1581 && Field doesn't accept NULL m.cErrorMessage = E_FIELDNULL_LOC CASE aErrors[1,1] = 1582 && Field rule violated m.cErrorMessage = E_FIELDRULE_LOC CASE aErrors[1,1] = 1700 && Record in use by another user m.cErrorMessage = E_RECORDLOCK_LOC CASE aErrors[1,1] = 1583 && Row rule violated m.cErrorMessage = E_ROWRULE_LOC CASE aErrors[1,1] = 1884 && Unique index violation m.cErrorMessage = E_UNIQUEINDEX_LOC CASE aErrors[1,1] = 1585 && Record changed by another user IF m.lInDBC &&handle free tables above * Display conflict alert IF MESSAGEBOX(E_DIRTYREC_LOC,4+48) = MSGBOX_YES *Try to force update BEGIN TRANSACTION m.lSuccess = TABLEUPDATE(.T.,.T.) IF m.lSuccess END TRANSACTION LOOP ELSE ROLLBACK =MESSAGEBOX(E_NOFORCE_LOC) ENDIF ENDIF ENDIF OTHERWISE IF !EMPTY(m.cErrorMessage) &&for free table handling above m.cErrorMessage = E_PROMPT_LOC+aErrors[1,2] ENDIF ENDCASE * Had an error we couldn't handle =TABLEREVERT(.T.) &&revert all records m.lSuccess = .F. IF !EMPTY(m.cErrorMessage) =MESSAGEBOX(E_FAIL_LOC+m.cErrorMessage) ENDIF ENDFOR SELECT (m.nOldArea) RETURN m.lSuccess ENDPROC PROCEDURE Destroy * Restore various settings LOCAL nTablesUsed,aTablesUsed,i,nDECursors,aDECursors,cDataEnvRef DIMENSION aTablesUsed[1] IF TYPE('THIS.Parent') # "O" RETURN ENDIF IF TYPE("THIS.oldTalk") = "C" AND THIS.oldTalk="ON" SET TALK ON ENDIF * OLE Servers can still send data back to General fields * even though they are not in Edit Mode. We need to reset * buffering to 1 so the buffer is not updated by the OLE Server. * Also, folks might exit out while editing. IF THIS.UseDataEnv DIMENSION aDECursors[1] DO CASE CASE TYPE("THISFORM.DataEnvironment") = "O" nDECursors = AMEMBERS(aDECursors,THISFORM.DataEnvironment,2) cDataEnvRef = "THISFORM.DataEnvironment" CASE TYPE("THISFORMSET.DataEnvironment") = "O" nDECursors = AMEMBERS(aDECursors,THISFORMSET.DataEnvironment,2) cDataEnvRef = "THISFORMSET.DataEnvironment" ENDCASE FOR i = 1 TO m.nDECursors WITH EVAL(m.cDataEnvRef + "." + aDECursors[m.i]) IF USED(.ALIAS) AND ATC("CURSOR",.BaseClass)#0 AND ; CursorGetProp("sourcetype",.ALIAS)=3 AND ; CursorGetProp("buffering",.ALIAS)>1 =TableRevert(.T.,.ALIAS) =CursorSetProp("buffering",1,.ALIAS) &&optimistic table buffering ENDIF ENDWITH ENDFOR ENDIF * Skip if using preview mode IF THIS.PreviewMode RETURN ENDIF IF THIS.oldSetDelete = "OFF" SET DELETED OFF ENDIF SET REPROCESS TO THIS.oldReprocess SET MESSAGE TO SELECT (THIS.nWorkArea) IF THIS.UseDataEnv RETURN ENDIF * The following code is here to support * forms not using a DataEnvironment. m.nTablesUsed = AUSED(aTablesUsed) FOR i = 1 TO m.nTablesUsed IF USED(aTablesUsed[m.i,1]) AND ATC(".TMP",DBF(aTablesUsed[m.i,1]))=0 &&skip for views =CursorSetProp("buffering",THIS.oldBuffering,aTablesUsed[m.i,1]) &&optimistic table buffering ENDIF ENDFOR IF THIS.oldMultiLocks = "OFF" SET MULTILOCKS OFF ENDIF IF THIS.oldSetFields = "ON" SET FIELDS ON ENDIF SET REFRESH TO THIS.oldRefresh ENDPROC PROCEDURE Error Parameters nError, cMethod, nLine LOCAL aFoxErr,nTotErr DIMENSION aFoxErr[1] nTotErr = AERROR(aFoxErr) DO CASE CASE INLIST(m.nError,1733,1734) &&property not found -- traps SETALL() RETURN CASE m.nError=1938 &&no parent RETURN CASE nToterr>0 AND aFoxErr[1,1] = 1420 * Corrupt Ole object in General field. =MESSAGEBOX(aFoxErr[1,2]) RETURN ENDCASE **** Error Dialog ****** =MESSAGEBOX(MESSAGE(1)+CHR(13)+; "Error: "+STR(nError)+CHR(13)+; MESSAGE()+CHR(13)+; "Method: "+cMethod+CHR(13)+; "Line: "+STR(nLine)) RETURN TO MASTER ENDPROC PROCEDURE Init #DEFINE C_WIZSTYLE "WIZSTYLE.VCX" #DEFINE C_WIZDIR "WIZARDS\" #DEFINE C_PROMPT1_LOC "Find: " #DEFINE E_NOSTYLE_LOC "The class library (WIZSTYLE.VCX) needed by this form could not be found. "+; "Please locate." LOCAL cWizHomePath,separator,cWizStyFile IF TYPE('THIS.Parent') # "O" RETURN ENDIF IF SET("TALK") = "ON" SET TALK OFF THIS.oldTalk = "ON" ELSE THIS.oldTalk = "OFF" ENDIF IF ATC(C_WIZSTYLE,SET("CLASSLIB")) = 0 * Returns just the pathname cWizHomePath = _WIZARD IF '\' $ cWizHomePath cWizHomePath = SUBSTR(m.cWizHomePath,1,RAT('\',m.cWizHomePath)) IF RIGHT(m.cWizHomePath,1) = '\' AND LEN(m.cWizHomePath) > 1 ; AND SUBSTR(m.cWizHomePath,LEN(m.cWizHomePath)-1,1) <> ':' cWizHomePath = SUBSTR(m.cWizHomePath,1,LEN(m.cWizHomePath)-1) ENDIF ELSE cWizHomePath = '' ENDIF * Add a backslash unless there is one already there. separator = IIF(_MAC,":","\") IF !(RIGHT(m.cWizHomePath,1) $ '\:') AND !EMPTY(m.cWizHomePath) m.cWizHomePath= m.cWizHomePath+ m.separator ENDIF DO CASE CASE FILE(C_WIZSTYLE) cWizFile = C_WIZSTYLE CASE FILE(m.cWizHomePath+C_WIZSTYLE) cWizFile = m.cWizHomePath+C_WIZSTYLE CASE FILE(m.cWizHomePath+C_WIZDIR+C_WIZSTYLE) cWizFile = m.cWizHomePath+C_WIZDIR+C_WIZSTYLE CASE FILE(HOME()+C_WIZSTYLE) cWizFile = HOME()+C_WIZSTYLE CASE FILE(HOME()+C_WIZDIR+C_WIZSTYLE) cWizFile = HOME()+C_WIZDIR+C_WIZSTYLE OTHERWISE =MESSAGEBOX(E_NOSTYLE_LOC) cWizFile = GETFILE("VCX",C_PROMPT1_LOC+C_WIZSTYLE) ENDCASE IF ATC(C_WIZSTYLE,m.cWizFile)#0 SET CLASS TO (m.cWizFile) ADDITIVE ELSE * Failed to get WIZSTYLE.VCX file RETURN .F. ENDIF ENDIF THIS.InitVars() ENDPROC PROCEDURE Refresh **** Special Preview Mode Handling **** IF THIS.PreviewMode AND THIS.PreviewInit THIS.PreviewInit = .F. THIS.cmdAdd.Enabled = .F. THIS.cmdDelete.Enabled = .F. THIS.cmdFind.Enabled = .F. THIS.cmdPrint.Enabled = .F. THIS.cmdExit.Enabled = .F. THIS.nWorkArea = SELECT() ENDIF ENDPROC  container container searchclassWidth = 452 Height = 160 BackStyle = 0 TabIndex = 1 BackColor = 192,192,192 remotedelimeter = (.F.) Name = "searchclass" bPROCEDURE searchexpr LOCAL cGetExpr1,cGetExpr2,cJoin,cGetExpr m.cGetExpr1 = THIS.SearchItem(THIS.cboFields1,THIS.cboOperators1,THIS.txtExpr1) m.cGetExpr2 = THIS.SearchItem(THIS.cboFields2,THIS.cboOperators2,THIS.txtExpr2) m.cJoin = IIF(THIS.optGrpAndOr.value = 2," OR "," AND ") DO CASE CASE EMPTY(m.cGetExpr1) AND EMPTY(m.cGetExpr2) m.cGetExpr = "" CASE EMPTY(m.cGetExpr2) m.cGetExpr = m.cGetExpr1 CASE EMPTY(m.cGetExpr1) m.cGetExpr = m.cGetExpr2 OTHERWISE m.cGetExpr = m.cGetExpr1+m.cJoin+m.cGetExpr2 ENDCASE RETURN m.cGetExpr ENDPROC PROCEDURE dataexpr LPARAMETER cDataType,cFldExpr LOCAL cTmpExpr DO CASE CASE INLIST(m.cDataType,"M","G","P","O","U") RETURN "" CASE m.cDataType = "C" IF TYPE("'Test'="+m.cFldExpr) # "L" IF THIS.REMOTEDELIMETER cTmpExpr = '"'+m.cFldExpr+'"' ELSE cTmpExpr = "["+m.cFldExpr+"]" ENDIF ELSE cTmpExpr = m.cFldExpr ENDIF * Check for case sensitive IF THIS.chkCaseSensitive.Value = 0 m.cTmpExpr= "UPPER("+m.cTmpExpr+")" ENDIF RETURN m.cTmpExpr CASE INLIST(m.cDataType,"N","F","I","Y","B") * Check for any commas and remove RETURN ALLTRIM(STR(VAL(STRTRAN(m.cFldExpr,",")),16,4)) CASE INLIST(m.cDataType,"D","T") RETURN "{"+CHRTRAN(m.cFldExpr,"{}","")+"}" OTHERWISE RETURN "" ENDCASE ENDPROC PROCEDURE searchitem LPARAMETERS oField,oOp,oExpr LOCAL cExpr,cDataType,cOp,cFldName,cFldExpr,cRetExpr,aExprs,nTotExprs,i * Check to make sure proper parameters passed IF TYPE("m.oField")#"O" OR TYPE("m.oOp")#"O" OR TYPE("m.oExpr")#"O" RETURN "" ENDIF m.cFldName = ALLTRIM(m.oField.Value) m.cFldExpr = ALLTRIM(m.oExpr.Value) * If empty expression return empty. IF EMPTY(m.cFldExpr) AND !INLIST(m.oOp.listitemid,5,6) RETURN "" ENDIF * Get data type of field m.cDataType = aWizFList(m.oField.listitemid,2) IF m.cDataType = "C" AND THIS.chkCaseSensitive.Value = 0 m.cFldName = "UPPER("+m.cFldName+")" ENDIF * Get the operator language equivalent DO CASE CASE m.oOp.listitemid = 1 && equals m.cOp = "=" CASE m.oOp.listitemid = 2 && not equals m.cOp = "<>" CASE m.oOp.listitemid = 3 && more than m.cOp = ">" CASE m.oOp.listitemid = 4 && less than m.cOp = "<" CASE m.oOp.listitemid = 5 && is blank RETURN "EMPTY("+m.cFldName+")" CASE m.oOp.listitemid = 6 && is NULL RETURN "ISNULL("+m.cFldName+")" CASE m.cDataType = "L" && don't allow other options for logical type m.cOp = "=" CASE m.oOp.listitemid = 7 && contains m.cFldExpr = THIS.DataExpr("C",m.cFldExpr) DO CASE CASE m.cDataType = "T" RETURN "AT("+m.cFldExpr+",TTOC("+m.cFldName+"))>0" CASE m.cDataType = "D" RETURN "AT("+m.cFldExpr+",DTOC("+m.cFldName+"))>0" CASE INLIST(m.cDataType,"N","F","I","Y","B") RETURN "AT("+m.cFldExpr+",ALLTRIM(STR("+m.cFldName+")))>0" OTHERWISE RETURN "AT("+m.cFldExpr+","+m.cFldName+")>0" ENDCASE OTHERWISE nTotExprs = OCCURS(",",m.cFldExpr)+1 DIMENSION aExprs[m.nTotExprs] FOR i = 1 TO m.nTotExprs DO CASE CASE m.i = m.nTotExprs aExprs[m.i] = SUBSTR(m.cFldExpr,RAT(",",m.cFldExpr)+1) CASE m.i =1 aExprs[m.i] = LEFT(m.cFldExpr,AT(",",m.cFldExpr)-1) OTHERWISE aExprs[m.i] = SUBSTR(m.cFldExpr,AT(",",m.cFldExpr,m.i-1)+1,; AT(",",m.cFldExpr,m.i)-AT(",",m.cFldExpr,m.i-1)-1) ENDCASE aExprs[m.i] = THIS.DataExpr(m.cDataType,aExprs[m.i]) ENDFOR DO CASE CASE m.oOp.listitemid = 8 && in m.cFldExpr = "" FOR i = 1 TO m.nTotExprs m.cFldExpr = m.cFldExpr + aExprs[m.i] IF m.i # m.nTotExprs m.cFldExpr = m.cFldExpr + "," ENDIF ENDFOR RETURN "INLIST("+m.cFldName+","+m.cFldExpr+")" CASE m.oOp.listitemid = 9 && between IF ALEN(aExprs)=1 DIMENSION aExprs[2] aExprs[2] = aExprs[1] ENDIF IF ALEN(aExprs)>2 DIMENSION aExprs[2] ENDIF RETURN "BETWEEN("+m.cFldName+","+aExprs[1]+","+aExprs[2]+")" OTHERWISE RETURN "" ENDCASE ENDCASE DO CASE CASE INLIST(m.cDataType,"M","G","P","O","U") RETURN "" CASE m.cDataType = "L" IF TYPE(m.cFldName+m.cOp+m.cFldExpr) # "L" IF (AT(m.cFldExpr,"fFnN")#0 AND m.cOp # "<>") OR (AT(m.cFldExpr,"tTyY")#0 AND m.cOp = "<>") m.cFldName = "!"+m.cFldName ENDIF RETURN m.cFldName ENDIF OTHERWISE m.cFldExpr = THIS.DataExpr(m.cDataType,m.cFldExpr) ENDCASE IF EMPTY(m.cFldExpr) RETURN "" ELSE RETURN m.cFldName+m.cOp+m.cFldExpr ENDIF ENDPROC PROCEDURE Destroy RELEASE aWizFList ENDPROC  % 8 U@%T C%T C   0T C   OR  AND 6 H. C C  T  C T   C  T  2.T    B U CGETEXPR1 CGETEXPR2CJOINCGETEXPRTHIS SEARCHITEM CBOFIELDS1 CBOOPERATORS1TXTEXPR1 CBOFIELDS2 CBOOPERATORS2TXTEXPR2 OPTGRPANDORVALUE  H% C MGPOUM B C1!%C'Test'= bL%T" "T[ ]T %" T UPPER( ) B % C NFIYBsBCCCC ,gZ C DTB{C {}}2 BU CDATATYPECFLDEXPRCTMPEXPRTHISREMOTEDELIMETERCHKCASESENSITIVEVALUE'   D%Cm.oFieldbOCm.oOpbO Cm.oExprbO  BT C T C  &%C C    BT C %% C  F T UPPER( ) HW  }T =  T <>  T >  T <   BEMPTY( )  QBISNULL( ) LuT =  T CC  H T*BAT( ,TTOC( ))>0 D1*BAT( ,DTOC( ))>0% C NFIYB2BAT(  ,ALLTRIM(STR( )))>02$BAT( , )>02T C,   (  H K(T C C, \ (T C C, =2ZT C C,  C,  C,  \)T C C  H&  T  ( T  C % T  ,&BINLIST( , )   %C '  T C %C L  6BBETWEEN( ,C ,C )2 B H% C MGPOU B L"%C   bLR%C fFnN <> #C tTyY <>  xT !  B 2T C  %C  BB   UOFIELDOOPOEXPRCEXPR CDATATYPECOPCFLDNAMECFLDEXPRCRETEXPRAEXPRS NTOTEXPRSIVALUE LISTITEMID AWIZFLISTTHISCHKCASESENSITIVEDATAEXPR <U AWIZFLIST searchexpr,dataexpr searchitemDestroy 11RQA2rQBAAsARB4qCAbacARAaaaaaaAaAAQ!AAQ1AAaQaAAaaAqAAAaAAQA!!aAAAqA4q2)H$,E&=DW)9remotedelimeter *searchexpr *dataexpr *searchitem comboboxcombobox cboFields1 searchclass.FontName = "MS Sans Serif" FontSize = 8 ControlSource = "" Height = 23 Left = 11 Style = 2 TabIndex = 1 Top = 25 Width = 141 Name = "cboFields1" {PROCEDURE Init LOCAL i PUBLIC aWizFList DIMENSION aWizFList[1] =AFIELDS(aWizFList) FOR m.i = FCOUNT() TO 1 STEP -1 IF INLIST(aWizFList[m.i,2],"G","M","U") &&Memo field =ADEL(aWizFList,m.i) DIMENSION aWizFList[MAX(1,ALEN(aWizFList,1)-1), ALEN(aWizFList, 2)] ENDIF ENDFOR THIS.RowSourceType = 5 THIS.RowSource = "aWizFList" THIS.VALUE = THIS.LIST[1] ENDPROC  %]kU7 C C.(%%CC GMUC (CCDCTT aWizFListTCUI AWIZFLISTTHIS ROWSOURCETYPE ROWSOURCEVALUELISTInit,1qqQ!AAq2p)comboboxcombobox cboOperators1 searchclass.FontName = "MS Sans Serif" FontSize = 8 Alignment = 0 Height = 23 Left = 158 Style = 2 TabIndex = 2 Top = 25 Width = 96 Name = "cboOperators1" qPROCEDURE Init #DEFINE C_OPERATORS_LOC "equals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;between" THIS.ADDITEM(C_OPERATORS_LOC) THIS.VALUE = THIS.LIST[1] ENDPROC PROCEDURE InteractiveChange IF INLIST(THIS.ListItemId,5,6) THIS.Parent.TxtExpr1.Value = "" ENDIF THIS.Parent.TxtExpr1.ENABLED = !INLIST(THIS.ListItemId,5,6) ENDPROC  =K%W U|bCRequals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;betweenTCUTHISADDITEMVALUELISTW%C.T"TC UTHIS LISTITEMIDPARENTTXTEXPR1VALUEENABLEDInit,InteractiveChange1"q3aA!2f)textboxtextboxtxtExpr1 searchclass.{FontName = "MS Sans Serif" FontSize = 8 Height = 23 Left = 260 TabIndex = 3 Top = 25 Width = 176 Name = "txtExpr1" comboboxcombobox cboFields2 searchclass.FontName = "MS Sans Serif" FontSize = 8 Height = 23 Left = 11 Style = 2 TabIndex = 4 Top = 117 Width = 141 Name = "cboFields2" lPROCEDURE Init THIS.RowSourceType = 5 THIS.RowSource = "aWizFList" THIS.VALUE = THIS.LIST[1] ENDPROC  ]%UCTT aWizFListTCUTHIS ROWSOURCETYPE ROWSOURCEVALUELISTInit,1q2a)comboboxcombobox cboOperators2 searchclass.FontName = "MS Sans Serif" FontSize = 8 Height = 23 Left = 160 Style = 2 TabIndex = 5 Top = 117 Width = 96 Name = "cboOperators2" qPROCEDURE Init #DEFINE C_OPERATORS_LOC "equals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;between" THIS.ADDITEM(C_OPERATORS_LOC) THIS.VALUE = THIS.LIST[1] ENDPROC PROCEDURE InteractiveChange IF INLIST(THIS.ListItemId,5,6) THIS.Parent.TxtExpr2.Value = "" ENDIF THIS.Parent.TxtExpr2.ENABLED = !INLIST(THIS.ListItemId,5,6) ENDPROC  =K%W U|bCRequals\;not equals\;more than\;less than\;is blank\;is NULL\;contains\;in\;betweenTCUTHISADDITEMVALUELISTW%C.T"TC UTHIS LISTITEMIDPARENTTXTEXPR2VALUEENABLEDInit,InteractiveChange1"q3aA!2f)textboxtextboxtxtExpr2 searchclass.|FontName = "MS Sans Serif" FontSize = 8 Height = 23 Left = 260 TabIndex = 6 Top = 118 Width = 176 Name = "txtExpr2"  optiongroup optiongroup optgrpAndOr searchclass.WAutoSize = .T. ButtonCount = 2 BackStyle = 0 Value = 1 Height = 46 Left = 50 Top = 55 Width = 58 TabIndex = 7 Name = "optgrpAndOr" Option1.FontName = "MS Sans Serif" Option1.FontSize = 8 Option1.BackStyle = 0 Option1.Caption = "\